اطلاعیه

Collapse
No announcement yet.

تفاوت شبیه سازی ها

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تفاوت شبیه سازی ها

    می خواستم بدونم چه تفاوتی بین شبیه ساز نرم افزار ise که در خود نرم افزار وجود داره با شبیه سازی از طریق نوشتن فایل test bench وجود داره؟
    من با یه طرح ساده از هر دو جواب یکسان بدست آوردم
    اگه کسی کار کرده لطفاً کمک کنه
    مردود شدن بهتر از با تقلب قبول شدن است

    #2
    پاسخ : تفاوت شبیه سازی ها

    مگه شبیه ساز ISE فایل test bench نمی خواد؟! من متوجه سوال نشدم
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : تفاوت شبیه سازی ها

      نوشته اصلی توسط محمد حسینی
      مگه شبیه ساز ISE فایل test bench نمی خواد؟! من متوجه سوال نشدم
      شاید منظورمو خوب بیان نکردم
      گاهی برای شبیه سازی بجای نوشتن فایل test bench از ابزار waveform edit استفاده می شود که فقط کافیه پارامترهای
      موج مربعی رو مثل فرکانس پهنای پالس و حتی انتهای شبیه سازی رو فقط تنظیم کنیم من خودم قبلا از این ابزار استفاده می کردم
      اما حالا فایل vhdl مربوط به test bench رو می نویسم می خواستم فرق این دو تا رو بدونم امیدوارم منظورمو خوب بیان کرده باشم
      نظر شما چیه؟
      مردود شدن بهتر از با تقلب قبول شدن است

      دیدگاه


        #4
        پاسخ : تفاوت شبیه سازی ها

        نوشته اصلی توسط masoud58
        شاید منظورمو خوب بیان نکردم
        گاهی برای شبیه سازی بجای نوشتن فایل test bench از ابزار waveform edit استفاده می شود که فقط کافیه پارامترهای
        موج مربعی رو مثل فرکانس پهنای پالس و حتی انتهای شبیه سازی رو فقط تنظیم کنیم من خودم قبلا از این ابزار استفاده می کردم
        اما حالا فایل vhdl مربوط به test bench رو می نویسم می خواستم فرق این دو تا رو بدونم امیدوارم منظورمو خوب بیان کرده باشم
        نظر شما چیه؟
        سلام مهندس


        ببین در نظر بگیر یک بلوک رمزنگاری طراحی کردی که یک دیتا 56 بیتی رو با یک کلید 64 بیتی رمز نگاری میکنه. در عمل تو باید ثابت کنی که این طرحی که تو پیدا کردی با اون چیزی که مد نظرت بوده یکیه. همونطور که گفتی یک راهش این هست که برای هر حالت ممکن یک شکل موج ایجاد کنی و خروجی طرحت رو با دیتای مورد انتظار مقایسه کنی. اگه یکی بود خوب همه چی ok هست وگرنه باید بری ببینی که اشکال کار از کجا بوده. حالا در نظر بگیر باید این کار رو برای 56^2 * 64^2 حالت ممکن امتحان کنی. اگر این کار رو انجام بدی میتونی با اطمینان بگی که این بلوک من به ازای هر ورودی دلخواه خروجی درستی رو ایجاد میکنه. همینطور که میبینی تعداد حالت هایی رو که باید امتحان کنی بسیار زیاد خواهد بود. به همین خاطر باید دور استفاده از waveform رو به طور کامل خط بکشی. راه دیگه این هست که بیای یک کد VHDL دیگه بنویسی که بیاد تمام این حالت ها رو به صورت اتوماتیک به طرح مورد نطرت بده و جواب رو با جواب مورد انتظار مقایسه کنه. با این کار میتونی خیلی از حالت های ممکنه رو امتحان کنی. به این کار simulation میگن و به اون کدی که نوشتی TestBench میگن (در حالت کلی). خوبی این کار این هست که کد TestBench نباید حتما قابل سنتز باشه(در اکثر موارد) و تو میتونی او رو خیلی HighLevel بنویسی. در عمل معمولا تعداد خطوطی که برای TestBench مینویسن حدود 2 برابر خود کد اصلی هست! میتونی با مراجعه به کتابهای Functional Verification اطلاعات خوبی در این زمینه بدست بیاری.
        ولی هنوز یک مشکل هست و اون اینه که اگر برای تست هر حالت حداکثر 1ms وقت صرف کنی باز حدود چندین میلیون سال باید وقت صرف کنی که تمام حالت های ممکن رو بررسی کنی! و این یک واقعیت هست میتونی ماجرای پروسسور Pentium4 شرکت Intel رو از اینجا بخونی:
        http://en.wikipedia.org/wiki/Pentium_FDIV_bug

        در عمل کاری که انجام میدن یک نوع دیگری Verification رو سیستم مورد نظر انجام میدن به نام Formal Verification که میان به صورت ریاضی ثابت میکنن که این سیستم مورد نظر از لحاظ عملکردی با Specification مورد نظر همخوانی داره. تازه این روش ها هم با قابلیت اطمینان 100% همراه نیست.

        حالا اگه طرح تو نسبتا ساده هست مثلا همین بلوک رمزنگاری و تو دقت آنچنانی نمیخوای. بهت میگن ما این بلوک رو میخوایم با Functional Coverage l مثلا 80%. یعنی بلوکی که از تو انتظار داریم به ما تحویل بدی باید حداقل 80% حالات قابل دسترس رو امتحان کرده باشه. شما میای یک TestBench مینویسی با محاسبه حالات قابل دسترس میگی من مثلا به 70% Functional Coverage رسیدم.
        در حالت کلی استفاده از Waveform فقط برای طراحی های کوچک قابل انجام هست و تازه خیلی ها برای طرح های کوچک هم TestBench مینویسن
        امیدوارم منظورت رو درست فهمیده باشم!

        دیدگاه


          #5
          پاسخ : تفاوت شبیه سازی ها

          نوشته اصلی توسط mohammadh1387
          سلام مهندس


          ببین در نظر بگیر یک بلوک رمزنگاری طراحی کردی که یک دیتا 56 بیتی رو با یک کلید 64 بیتی رمز نگاری میکنه. در عمل تو باید ثابت کنی که این طرحی که تو پیدا کردی با اون چیزی که مد نظرت بوده یکیه. همونطور که گفتی یک راهش این هست که برای هر حالت ممکن یک شکل موج ایجاد کنی و خروجی طرحت رو با دیتای مورد انتظار مقایسه کنی. اگه یکی بود خوب همه چی ok هست وگرنه باید بری ببینی که اشکال کار از کجا بوده. حالا در نظر بگیر باید این کار رو برای 56^2 * 64^2 حالت ممکن امتحان کنی. اگر این کار رو انجام بدی میتونی با اطمینان بگی که این بلوک من به ازای هر ورودی دلخواه خروجی درستی رو ایجاد میکنه. همینطور که میبینی تعداد حالت هایی رو که باید امتحان کنی بسیار زیاد خواهد بود. به همین خاطر باید دور استفاده از waveform رو به طور کامل خط بکشی. راه دیگه این هست که بیای یک کد VHDL دیگه بنویسی که بیاد تمام این حالت ها رو به صورت اتوماتیک به طرح مورد نطرت بده و جواب رو با جواب مورد انتظار مقایسه کنه. با این کار میتونی خیلی از حالت های ممکنه رو امتحان کنی. به این کار simulation میگن و به اون کدی که نوشتی TestBench میگن (در حالت کلی). خوبی این کار این هست که کد TestBench نباید حتما قابل سنتز باشه(در اکثر موارد) و تو میتونی او رو خیلی HighLevel بنویسی. در عمل معمولا تعداد خطوطی که برای TestBench مینویسن حدود 2 برابر خود کد اصلی هست! میتونی با مراجعه به کتابهای Functional Verification اطلاعات خوبی در این زمینه بدست بیاری.
          ولی هنوز یک مشکل هست و اون اینه که اگر برای تست هر حالت حداکثر 1ms وقت صرف کنی باز حدود چندین میلیون سال باید وقت صرف کنی که تمام حالت های ممکن رو بررسی کنی! و این یک واقعیت هست میتونی ماجرای پروسسور Pentium4 شرکت Intel رو از اینجا بخونی:
          http://en.wikipedia.org/wiki/Pentium_FDIV_bug

          در عمل کاری که انجام میدن یک نوع دیگری Verification رو سیستم مورد نظر انجام میدن به نام Formal Verification که میان به صورت ریاضی ثابت میکنن که این سیستم مورد نظر از لحاظ عملکردی با Specification مورد نظر همخوانی داره. تازه این روش ها هم با قابلیت اطمینان 100% همراه نیست.

          حالا اگه طرح تو نسبتا ساده هست مثلا همین بلوک رمزنگاری و تو دقت آنچنانی نمیخوای. بهت میگن ما این بلوک رو میخوایم با Functional Coverage l مثلا 80%. یعنی بلوکی که از تو انتظار داریم به ما تحویل بدی باید حداقل 80% حالات قابل دسترس رو امتحان کرده باشه. شما میای یک TestBench مینویسی با محاسبه حالات قابل دسترس میگی من مثلا به 70% Functional Coverage رسیدم.
          در حالت کلی استفاده از Waveform فقط برای طراحی های کوچک قابل انجام هست و تازه خیلی ها برای طرح های کوچک هم TestBench مینویسن
          امیدوارم منظورت رو درست فهمیده باشم!
          با تشکر از پاسخ شما دوست گرامی
          از اونجایی که برای دریافت بهترین پاسخ از یک طراحی سرانجام لازمه که بعد از پیاده سازی یک طرح اون رو با دستگاه لاجیک آنالایزرتست کرد این آزمایش برای کارهای عملی اجباری هست
          چون من از نزدیک این دستگاه رو دیدم خیلی شبیه به waveform هست برای همین به سوال فوق رسیدم
          برداشت من از پاسخ شما اینه که برای طرح های پیشرفته مخصوصا پردازشی نمیشه از waveform استفاده کرد
          البته چون من تازه شروع به کار عملی کردم این سوالهای مبتدیانه برام پیش می یاد البته می خوام یه کار پردازش صوت رو تا آخر تابستون انجام بدم
          باز هم ممنون از پاسخ خوب شما
          دوستان اگر باز هم نظری دارند بیان کنند برای تفهیم بیشتر واقعا لازم دارم
          مردود شدن بهتر از با تقلب قبول شدن است

          دیدگاه


            #6
            پاسخ : تفاوت شبیه سازی ها

            test bench نوشتن با یه زبان برنامه نویسی یا توصیفی، امکانات و انعطاف پذیری خیلی بیشتری داره. در مقابل، تولید waveform بصورت نرم افزاری به عنوان ورودی و مشاهده waveform خروجی، برای طرح های ساده و ابتدایی استفاده میشه.

            با test bench نوشتن میتونی به سرعت و به سادگی، ورودی های مختلف به طرح بدی. طبق رفتار مدار تحت تست،حالت ها و شرایط متفاوت به وجود بیاری. از توصیف سطح بالا استفاده کنی، آنالیز و بررسی خروجی ها رو خودکار کنی. میتونی مدارهایی که در نهایت باید با مدار خودت در تعامل باشن رو در سطح رفتاری مدل سازی و تو شبیه سازی استفاده کنی.

            فعلا که تازه شروع کردی... انشاالله پیشرفت کنی متوجه میشی شبیه سازی چقدر مهم و چه پیچیدگی هایی داره
            https://www.linkedin.com/in/mohammadhosseini69

            http://zakhar.blog.ir

            دیدگاه


              #7
              پاسخ : پاسخ : تفاوت شبیه سازی ها

              نوشته اصلی توسط محمد حسینی
              test bench نوشتن با یه زبان برنامه نویسی یا توصیفی، امکانات و انعطاف پذیری خیلی بیشتری داره. در مقابل، تولید waveform بصورت نرم افزاری به عنوان ورودی و مشاهده waveform خروجی، برای طرح های ساده و ابتدایی استفاده میشه.

              با test bench نوشتن میتونی به سرعت و به سادگی، ورودی های مختلف به طرح بدی. طبق رفتار مدار تحت تست،حالت ها و شرایط متفاوت به وجود بیاری. از توصیف سطح بالا استفاده کنی، آنالیز و بررسی خروجی ها رو خودکار کنی. میتونی مدارهایی که در نهایت باید با مدار خودت در تعامل باشن رو در سطح رفتاری مدل سازی و تو شبیه سازی استفاده کنی.

              فعلا که تازه شروع کردی... انشاالله پیشرفت کنی متوجه میشی شبیه سازی چقدر مهم و چه پیچیدگی هایی داره
              دوستمون mohammadh1387 یه مثال حرفه ای زد امکانش هست شما هم یه مثال ساده بیان کنید برای درک بیشتر حالت رفتاری که فرمودید
              بینهایت ممنون و متشکرم از پاسخ های شما دوستان عزیز
              مردود شدن بهتر از با تقلب قبول شدن است

              دیدگاه


                #8
                پاسخ : تفاوت شبیه سازی ها

                آیا کدهای test bench را باید حتما در یک فایل جدا نوشت یا امکانش هست کدهای test bench را با کدهای مدار مانند entity و architecture در یک فایل نوشت؟
                مردود شدن بهتر از با تقلب قبول شدن است

                دیدگاه

                لطفا صبر کنید...
                X