ee sharif - دانشگاه صنعتی شریف

38
1.21 ۵ ر ب مای کار ن ه را ان مدی ح له ا ل ا ت م ع ن د ی س ه نما گاه سا( ش ی ما ر+ ا ر ب د- کای ی ات ها ر ب و ی2 پ م ی کا س د ی ه م کده( ش ی دا ف ی ر( ش ی عت ن ص گاه( ش ی دا ان ی س ی ا ی1389 ی ن رسا ه رور ب ن ی ر خ+ ا خ ی ار ی: 1 ۵/۵/89

Upload: dangxuyen

Post on 01-Feb-2017

287 views

Category:

Documents


7 download

TRANSCRIPT

1.21 ۵

راهنمای کاربر

سید نعمت الله احمدیانهایآزمایشگاه سامانه

اتکاپذیر دانشکده مهندسی

کامپیوتردانشگاه صنعتی شریف

1389 تابستان تاریخ آخرین به روز

:رسانی1 ۵/۵/89

مقدمه.فعال هیچی! تا بعد

م:ش:خ:ص:ا:ت: س:ی:س:ت:م:

چه:تاریخ

( : اضافه شدن برخی توضیحات برای روشن تر شدن فل::و دیجیت::ال۱۳۸۹ )مرداد ۱.۲۱۵ به ۱.۲۱۴از و نیز ویرایش برخی اشکاالت جزیی. اضافه شدن مثال طراحی مبدل آنالوگ به دیجیتال و توضیح مرب::وط

hsim و modelsim به وسیله mixed signal فایل ها جهت شبیه سازی Hierarchyبه

)1.214 به1.213از GDS(: اضافه شدن راهنمای نح::وه تولی::د خ::روجی 89 اردیبهشت 11 IIتوس::ط . و همچنینSOC Encounter به طرح در ابزار Antenna، راهنمای نحوه اضافه کردن اطالعات SOC Encounterابزار

.Post-layout بعد از عمل مسیریابی به منظور شبیهسازی sdfروش ایجاد فایل .

میکردcrash مشکل داشت. مدتی بعد از اجرا fedora 11 با encounter(:: 88 آبان 15)1.213 به1.113از ه::ای ف::دورا ب::رمی گ::ردد. ب::ا تغی::یرfontداد. مشکل ظاهراً ب::ه ع::دم ناس::ازگاری ب::ه را میSEGVو پیغام بدیع

این مشکل حل شد! زنده باد ابنتو!ubuntuسیستم عامل به

قرارداد نامگذاری جریان:

تغییرات کوچک صرفا با افزایش رقم هزارم اعشار مشخص میگردند.

تغیرات در ابزارها یا به روز کردن آنها با تغییر در رقم صدم اعشار اعالم میشود.

تغییر در سیستم عامل یا تغییرات اساسی در سیستم باعث تغییر در حد دهم اعشار است. اما بس::تهبه سلیقه تغییر دهنده یا این که آیا حال میکند یا غیر، میتواند با تغییر در رقم صدم اعشار باشد.

خانه جدید یا اسکریپت جدی::د ن::یز میتوان::د بس::ته ب::ه اهمیت بین ص::دم اعش::ار ت::ا دهماضافهشدن کتاباعشار شناور است.

گردد.اضافهشدن ابزار جدید تا تغییرات اساسی در جریان منجر به تغییر رقم یکان می

م:ع:ر:ف:ی: ا:ب:ز:ا:ر:ه:ا:Fedoraاین زنجیر ابزار ب:ر روی ی::ک ماش::ین مج::ازی نص::ب ش::ده اس::ت.2.66 ب:ا کرن:ل لین::وکس 11

ابزارهای استفاده شده در این جریان عبارتند از:Mentor ModelSim 6.5 SE

Synopsys Design Compiler 2007

Cadence SoC Encounter 8.1

Synopsys HSIM 2007

Synopsys PrimePower 2003

Synopsys PrimeTime 2003

م:س:ی:ر: ا:ب:ز:ا:ر:ه:ا:برای اجرای هر یک از ابزارها از دستورات زیر در ترمینال استفاده کنید:

tool command PathModelSim vsim /opt/Modelsim/modeltech/binDesign Compiler design_vision, dc_shell /opt/synopsys/Z-2007.05-SP3SoC Encounter encounter /opt/cadence/tools/binhsim Hsim /opt/synopsys/hsimLibraries /work/library

ه:ا:ک:ت:ا:ب:خ:ا:ن:ه: نیز درOSU به همراه استاندارد سلهای تهیه شده توسط دانشگاه AMI 0.5 و TSMC 0.35, 0.25, 0.18کتابخانه

این ماشین قرار داده شده است.TSMC 0.25 PDK tpz873n 0.25um Mixed Signal/RF 1P5M+ Salicide 2.5V/3.3V Process

TSMCکتابخانه 0.18u ب:ه هم:راه استانداردس::لهای آرتیس::ان CBDK018 کتابخان:ه کام:ل( tsmc-0.18uن:یز ب:ه ب::رایARMه::ای ip-coreصورت فشرده در جریان وجود دارد.( )به ص::ورت م::وقت: ممکن اس::ت تع::دادی از

ب::رایgdsII را هم برای حافظه این ورو اون ور پیدا کنید. ذوق زده نشوید. اینه::ا خ::روجی tsmc-90nmپروسه تولید نمیکنند.(layoutاستفاده در

(GDSII ت:ا: RTLج:ر:ی:ا:ن:(: ا:ز: جدول زیر به عنوان خالص::های از تم::امی فایله::ایی ک::ه در ه::ر قس::مت س::اخته میش::ود را ب::ه هم::راه

استفاده شان نشان میدهد:

Descriptioninput to:Output from:File Contains rtl description.-Modelsim for high level simulation

-Design vision for synthesis-Designer!.v-.vhdl (rtl)

Contains gate level description.

-Modelsim for post synthesis-Encounter for place and route-Primepower for power analysis

-Design vision-Encounter(post layout netlist)

.v-.vhdl-edif (gate level)

Contains project setting.For reuse in design vision for saving last saved setting

-Design vision.db (data base)

Contains timing constrains such as max clock input delay

-Encounter for place and route-Design vision.sdc (standard delay constraint)

Contains capacitor data for each node

-Primepower for power analysis-Design visionEncounter(postlayout)

.spef (standard parasitic exchange format)

Contains delay between each gates.

-Modelsim for post synthesis simulation

-Design vision.sdf (standard delay format)

Contains switching activity for each node

-Primepower to insert switching activity for power-vcd2saif to convert to saif format

-Modelsim.vcd

-powercompiler for power optimization

-vcd2saif.saif (switching activity interchange format)

Signal information during a specified time

-CosmosScope to view the signals-primepower-modelsim (mixed signal)

.fsdb

س:ن:ت:ز:سنتز به فرآیند تبدیل کد رفتاری تهیه شده توسط کاربر به کد سطح گیت گفته میشود.

ورودیvhd یا .vفایل(های( .

خروجی )سطح گیت(vفایل . )سطح گیت(vhdفایل .

EDIFفایل dbفایل sdcفایل sdfفایل spefفایل

میباشد. این برنامه را در دوSynopsys Design Compilerابزار سنتز مورد استفاده در این جریان، نرمافزار حالت تحت کنسول یا حالت گرافیکی میتوان اجرا نمود.

design( دستور زیر را در کنسول وارد نمایید، برنامه design visionبرای اجرای حالت گرافیکی )نرمافزار

Vision جایگزین ابزار Design Analyzer:در نسخههای قبلی شده است design_vision

به همین شکل در صورتی که میخواستید این برنامه را تحت کنسول اجرا کنید میتوانستید از دستور

dc_shell -tcl_mode

DCاستفاده کنید. حالت تحت کنسول برای زمانی که شما دسترسی مستقیم ب::ه س::رور مح::ل نص::ب

ندارید مناسب است.

بعد از اجرا بهتر است تعدادی متغیر را تعری:ف ک:رده و دس:تورات خ:ود را از طری:ق این متغیره::ا ب:ه ذخ::یره ک::رد و در مک::انی ک::هsynopsys_dc.setupبرنامه دهید. میتوان بسیاری از این متغیرها را در یک فای::ل .

گردد و دستورات آن را اجرا میکند. همیشه دنبال چنین فایلی میDC را اجرا کنیم قرار داد. DCمیخواهیم

designپس از اجرای visionیک محیط گرافیکی باز خواه::د ش::د ک::ه در قس::مت پ::ایین آن ی::ک قس::مت transcriptای دارد که یا میتوانید دستورات الزم را در آن تایپ کنید یا امور مربوطه را از منوهای آن اج::را

کنید. در این قسمت سعی میشود هر دستور به همراه دسترسی آن از طریق منوها مشخص شود.

در ابتدا فایل یا فایلهایی را که میخواهید سنتز کنید را اعالم نمایید. در ص::ورتی ک::ه بیش از ی::ک فای::ل … [ قرار دهید. برای مثالlistدارید آنها را در ]

set my_files [list core.vhdl nor8.vhdl pe.vhdl priority_encoder.vhdl reg.vhdl]

set my_files core.v

سپس تعدادی متغیر بیشتر، به خصوص اسم پین کالک و سرعت آن،

set my_toplevel core

set my_clock_pin clk

set my_clk_freq_MHz 100

است که بع::دا گ::زارش آن را ازDC بر روی پینهای ورودی و خروجی یکی از قابلیتهای delayقرار دادن میدهد. منتها در این مثال، ما قصد نداریم از این ویژگی استفاده کنیم لذاP&R به نرمافزار SDCطریق فایل

همگی را صفر قرار میدهیم.set my_input_delay_ns 0

set my_output_delay_ns 0

برای کار وجود دارد که در بسیاری از موارد میتوانید آنها را براب::ر هم ق::رار دهی::د. اینlibrary دو DCدر اس::ت. ترجیح::ا ب::رایtarget_library است که طرح شما به آن س::نتز میش::ود. ن::ام این کتابخان::ه libraryهمان

را هم برابر آن قرار دهید.link_libraryپیچیده نشدن موضوع set link_library [set target_library [concat [list osu025_stdcells.db] [list dw_foundation.sldb]]]

set target_library "osu025_stdcells.db"

define_design_lib WORK -path ./WORK

set_ultra_optimization true

set_ultra_optimization –force

فایلهای ورودی شما را خوانده و کمپایل میکند و در صورت داشتن خطا آنDC، ابزار analyzeبا دستور را به شما اعالم میکند.

analyze -f vhdl $my_files

analyze –f verilog $my_files

سپس

elaborate $my_toplevel

current_design $my_toplevel

link

uniquify

توجه کنید که بسیاری از این دستورها را میتوان از میان منوهای برنامه ن:یز پی::دا و اج:را نم:ود. ب:رای اما سرعت کار با کنسول بسیار باالتر است.File->Elaborateیا File->Analyzeمثال

کد شما را خوانده و برای خطا نیز چک کرده است و کدها را به هم چس::بانده اس::ت. ح::الDCتا اینجا انجام میشود.create_clockرا مشخص کنید. این کار توسط دستور باید پین کالک مدار و سرعت آن

set my_period [expr 1000 / $my_clk_freq_MHz]

set find_clock [ find port [list $my_clock_pin] ]

if { $find_clock != [list] } {

set clk_name $my_clock_pin

create_clock -period $my_period $clk_name

} else {

set clk_name vclk

create_clock -period $my_period -name $clk_name

}

set_driving_cell -lib_cell INVX8 [all_inputs]

ورودی و خروجیdelayمشخص کردن میزان

set_input_delay $my_input_delay_ns -clock $clk_name [remove_from_collection [all_inputs] $my_clock_pin]

set_output_delay $my_output_delay_ns -clock $clk_name [all_outputs]

و در نهایت شروع مرحله سنتز مدار.

را مجبور کنید تا تعداد گیت را بهینه کند.DC میتوانید set_max_areaنکته: با استفاده از دستور

یک پین را مشخص کند.Fanout را مجبور کنید تا DC میتوانید set_max_fanoutنکته: با استفاده از دستور

set_max_area 0

compile -ungroup_all -map_effort medium

compile -incremental_mapping -map_effort medium

check_design

در صورت لزوم میتوانید با استفاده از دستور compile -ungroup_all -map_effort high

DC را وادار به تالش بیشتر در مرحله mappingبرای ب::رآورده ک::ردن نیازه::ای ط::راحی نمایی::د. ب::دیهی است که این کار موجب افزایش زمان سنتز مدار میشود. به همین دلی::ل توص::یه میش::ود ب::رای اولین دور سنتز به خصوص در مدارهای بزرگ از این دستور استفاده نشود. چنانچه نیازهای طراحی ب::ا س::نتز س::اده

report ک::ه در فول::در core.mapped.v )مثال DCاولیه برآورده نشد میتوانی::د ب::ا خوران::دن دوب::اره فای::ل خ::روجی

تولید میشود ( به ورودی خودش احتمال موفقیت آن را برای برآوردن شرایط م::ورد نظ::ر اف::زایش دهی::د. (core.vبرای این کار کافیست تنها نام آن را به نام اصلی فایل اصلی طراحی تغییر دهید )مثال

ذخیره کرده و تنه::ا ب::ا ل::ودtclنکته دیگر اینکه تمام این مراحل را میتوانید در یک فایل متنی با پسوند . کل مراحل سنتز را یکباره انجام دهید.File => Execute Scriptکردن این فایل از طریق منوی

design مدار شما را سنتز کرده است و میتوانی::د در DCتا اینجا visionش:کل خ:روجی آن را ب::ه ص:ورت گرافیکی مشاهده کنید.

ه::انکته: در صورتی که در طراحی شما بعد از سنتز پورتهایی وجود داشت که به جایی وصل نیست آنرا میتوانید با دستور

remove_unconnected_ports -blast_busses [find -hierarchy cell "*"]

آنها را حذف کنید.

گ:ز:ا:ر:ش: گ:ی:ر:ی: اعالمreport_timing هس::تند و ب::ا دس::تور Timing میده::د گزارشهای مرب::وط ب::ه DCمهمترین گزارشی که

را مش::خص میکن::د. غ::یر ازClk اعالم میکند، م::یزان دوره DCی که Critical-pathمیگردند. توجه کنید که اندازه از دستورات زیر نیز استفاده کرد.max-delay و min-delayحالت کلی میتوان برای بدست آوردن

Report_timing

Report_timing –delay min –max_path 10

Report_timing –delay max –max_path 10

استفاده کنید. در صورتی که میزان اسلکتان منفی شدهTiming => Path Slackبرای دیدن اسلک از منوی است باید دوباره طراحی را سنتز کنید. در صورتی ک::ه ب::ه خط::ای کم برخوردی::د ی::ک روش::ی ک::ه میتوانی::د

باال. برایeffort کرده و دوباره کمپایل کنید. اما اینبار با میزان flatامتحان کنید این است که طراحی تان را مثال:

Ungroup –all flatten

Compile –map_effort high –incremental

کنی::د. ب::اflat مشکل دارد الزم نیس::ت ک::ل ط::راحی را timingدر صورتی که فقط یک قسمت به لحاظ نمایید ت:ا پروس::ه کمپای:لflat آن قسمت را انتخاب کرده و فقط و فقط آن قسمت را current_designدستور

سریعتر صورت گیرد.

و مساحت )حداقل( ط::راحیreport_cell شامل گزارش تعداد گیتهای مصرف شده DCسایر گزارشهای در حین س::نتز م::دار در پنج::رهDC میباشد. توجه کنید که خالصه ای از گزارش report_areaبر روی سیلیکون

هم نوشته میشود.DCترمینال مربوط به

است که میزان توان مص::رفی ط::راحی را اعالمreport_powerیک گزارش نسبتاً مهم دیگر نیز گزارش است( گزارش صحیح برگردان:د ابت::داPowerCompiler )که در اصل بخشی از report_powerمیکند. برای این که

ه::اActivity سیگنالها را بدست آورد. سپس این Activityباید یک بار طراحی را در شبیهساز اجرا کرد و میزان خوراند.DCرا به

ایج::ادvcd ی::ک فای::ل vcd قبل از انجام شبیهسازی با دستور ModelSimیک راه ساده آن این است که در DC در read_saif تبدیل کرد و فایل حاص::ل را ب::ا SAIF به فرمت vcd2saif را با برنامه vcdکرد و سپس این فایل

استفاده میکنیم ک::ه تحلی:لPrimePowerوارد کرد. منتها در این جریان برای محاسبه میزان توان از نرمافزار کاملتری را بر میگرداند. لذا از این دستور استفاده نکنید.

report_constraint -all_violators

redirect timing.rep { report_timing }

redirect cell.rep { report_cell }

redirect power.rep { report_power }

redirect area.rep { report_area }

خ:ر:و:ج:ی: ه:ا: چهار خروجی اصلی را تولید میکند:DCبه طور معمول،

Db: Synopsys DB fileکه نگهدارنده ط:راحی فعلی ش::ما میباش:د. در ص::ورتی ک::ه بع:دا باز کنید به آن نیازمندید. برای تولید این خروجی بای::دDCبخواهید همین طراحی را در

میتوانید بهhierarchy استفاده کنید. برای رعایت write –f db –output $filenameاز دستور را نیز اضافه کنید.hierarchy پارامتر –writeدستور

Netlist خروجی اصلی که گیتها را در بر دارد و ب:ه اب:زار :Placement & Routingخوران:ده ,Verilogمیشود. میتوان سه فرمت VHDL, EDIFرا برای آن مشخص ک:رد منته:ا ابزاره:ا

پش::تیبانی میکنن::د. دوب::اره ب::رای تولی::د اینEDIF و گاه::ا از Verilogعموم::ا از ف::رمت writeخروجی باید از دستور –f verilog –output $filenameاستفاده ک::رد و ب::رای رع::ایت

hierarchy میتوانید به دستور write– پارامتر hierarchy.را نیز اضافه کنید SDF یا Standard Delay Format که میتوان آن را برای netlist خروجی verilog در Modelsimبا

کرد وsdf_annotate("regfile.sdf",xarm.xarm9.xrf,,"rf.sdflog"); ، Back-annotateدستوری مثل $ ت:اخیر گیته:اSDF را با دقت بیشتری انج::ام داد. در این فای:ل post-synthesizeشبیهسازی

ها لحاظ نشده است.interconnectلحاظ شده است اما تاخیر SPEFکه حاوی اطالعات خازنها ی:ا مقاومته:ای پ:ارازیت بین گیته:ا اس:ت. از این فای:ل

ی::ا ب::اPrimePowerمیتوانید برای بدست آوردن میزان مصرف توان در نرم افزاری مثل Back-annotate کردن در نرم افزاری مث::ل Hsim ب:رای شبیهس:ازی س:طح اس:پایس post-

synthاس::تفاده کنی:د. دوب:اره، در این فای:ل تنه:ا اطالع:ات خ:ازنی گیته:ا وج:ود دارد و ها در آن لحاظ نش::ده اس::ت. ب::رای گ::رفتن این خ::روجی بای::د ازinterconnectاطالعات

استفاده کنید.write_parasiticsدستور

را که مشخص کردهای::د ن::یز در ف::رمت ی::ک فای::لDelayجدا از فایلهای فوق، شما میتوانید پارامترهای اس::تفادهwrite_sdc بخورانی::د. ب:رای این ک::ار بای:د از دس:تور p&r خروجی بگیرید و به نرمافزار sdcاستاندارد

کنید.

set filename [format "%s%s" $my_toplevel ".mapped.v"]

write -f verilog -output $filename

set filename [format "%s%s" $my_toplevel ".sdc"]

write_sdc $filename

set filename [format "%s%s" $my_toplevel ".sdf"]

write_sdf $filename

set filename [format "%s%s" $my_toplevel ".spef"]

write_parasitics -output $filename

quit

ج:ا:ی:ا:ب:ی: و: م:س:ی:ر:ی:ا:ب:ی:Placementدر این نس::خه از جری::ان، اب::زار & Routing م::ورد اس::تفاده نرمافزار Cadence SoC Encounter 8

کام::لLayout ساخته است را به یک DCمیباشد. این ابزار وظیفه دارد نت لیستی را که در مرحله قبل ابزار را تولید نماید.GDS-IIتبدیل کند و در نهایت خروجی فایل

ورودیVerilogنت لیست سنتز شده

است و مشخصات فیزیکی استاندارد سلها را در بر دارد.Physical Library: این فایل LEFفایل است و حاوی میزان تاخیر هر کدام از استاندارد سلهاست.Timing Library: این فایل Libفایل

راtypical این فایل معموال سه تاست که همیشه به::ترین ح::الت، ب::دترین ح::الت و ح::الت مشخص میکند.

مشخص کرده بودید.DCهایی که برای سنتز در Timing Constraint: قیدهای زمانی SDCفایل دارید در این فایل باید آنها را مشخص کنیدPAD: اگر در مدار IOفایل Capacitance Tableفایل به کار میرود.Cross-talk که برای تحلیل Cdb: فایل با فرمت Celtic Tableفایل Fire&Ice در Extraction برای Technology Dataفایل

cl و فایل tch شامل فایل GDSII برای تولید خروجی mappingفایل

خروجیVerilog (post-layout)نت لیست

sdfفایل spefفایل

,Placement از مجموعهی ابزارهای کوچکتر شامل SoCEابزار Routing, Extractionو س::ایر ابزاره::ا تش::کیل شده است.

در ساده ترین حالت به شکل زیر است:SoCE در Layoutمراحل ساخت

ورود داده ها ساختFloorplan

تنظیم شبکه انتقال توانPower Planning

قرار دادن گیتها بر رویfloorplan : Placement

ساخت سیگنالClk (CLK Tree Synthesize)

( مسیریابیRouting)Extraction شبیهسازیpost-layout

تحلیل زمانی مدارTiming Analysis

تحلیل توانPower Analysis

تحلیلCross-Talk

تولید خروجیStreamout

را وارد کنی::د. ص::فحه اص::لی نرمافزار ب::ه ص::ورت زی::رencounter در ترمینال دس::تور SoCEبرای شروع است:

ها را در آنج::ا یک شل به همراه خودش دارد که نتیجه بسیاری از فرمانDC نیز مانند SoCEتوجه کنید که مینویسد. پس حواستان به آن باشد.

و فای::لLEF را انتخاب کنید و فایلهای ورودی )خصوصا نت لیست سنتز شده، فای::ل Design->Importابتدا TLF و فایل Timing Constraint یا همان SDC را مشخص کنی::د. ب::رای اینک::ه خط::ای )Antennaرخ نده::د، عالوهبر

تکنولوژی را نیز مشخص کنید.LEF Antenna تکنولوژی فایل LEFفایل

را مشخص کنید. )بس::ته ب:هGnd و Vdd اسم پایههای Power رفته، در قسمت Advancedسپس به قسمت Library به Gnd گاها VSS).هم میگویند

RCدر قسمت Extraction دو فایل جدول خازن )معموال پسوند Cap یا CapTab دارد ) را برای اس::تخراج RC

را وارد کنید.Fire&Ice Sign-Off را برای tfیا تکنولوژی فایل

را انتخاب کنید و طول و عرضFloorPlan->Specify Floorplan را مشخص کنید. در منوی dieحال باید اندازه die را وارد کنید. توجه کنید که این مقدار را بیشتر از مقدار area ی کهDCمشخص میکند قرار دهید. هر چه

کش::یده و در نتیج::ه ج::واب ب::ا خط::ایP&R زحمت کمتری ب::رای SoCE را بزرگتر از حد نیاز بگیرید dieاندازه ها نیز در نظر بگیرید.PADکمتر را در زمان سریعتری تولید میکند. به عالوه مقداری فضا برای جای

را انتخاب کنید تا رینگهایPower->Power Planning->Add Rings را بسازید. در منوی Powerسپس باید شبکه اندازه این سیمها را نسبتا کلفت انتخابRing Configuration را ایجاد کنید. یادتان نرود که در GND و VDDاصلی

( فاصله بیاندازید.2( و بین آنها چند میکرون )مثال 10کنید. )مثال

Power->Powerسپس دوباره Planning->Add Stripe را زده تا ب::ر روی die هم س::یمهای powerرا بکش::ید. از همان مشخصات قبلی استفاده کنید.

شما باید شبیه چنین چیزی شده باشد:dieحال شکل

را در ی::ک ردی::ف ق::رار میدهن::د. ب::رای اینک::ه اینGnd و Vddدر طراحی استانداردسلها معموال پایههای Routeپایهها را به هم وصل کنیم از منوی -> Special Routeت::ر را انتخاب و اج::را کنی::د. )در نس::خههای ق::دیمی

SoCE به این کارsroute میگفتند.( بعد از این کار شکل die:باید اینطوری شده باشد

Place->Standardخوب، حاال وقت چیدن سلولهاست. از منوی Cells .را انتخاب کنی::د Run Full Placementرا را اجرا کنید.Placementها را انتخاب کنید و برنامه Optimizationانتخاب و تمامی

باید شبیه چنین چیزی باشد.Die. شکل تغییر دهیدPhysical Viewسپس نحوه نمایش را به

بیان میکند. در این مثالPlacement توجه کرده باشید اطالعات مفیدی را درباره نحوه SoCE اگر به شل

Density for the design = 0.303.

= stdcell_area 2105 (37890 um^2) / alloc_area 6952 (125145 um^2).

Pin Density = 0.524.

= total # of pins 1104 / total Instance area 2105.

Iteration 1: Total net bbox = 4.514e-11 (2.84e-11 1.67e-11)

Est. stn bbox = 4.514e-11 (2.84e-11 1.67e-11)

cpu = 0:00:00.0 real = 0:00:00.0 mem = 205.1M

Iteration 2: Total net bbox = 4.514e-11 (2.84e-11 1.67e-11)

Est. stn bbox = 4.514e-11 (2.84e-11 1.67e-11)

cpu = 0:00:00.0 real = 0:00:00.0 mem = 205.1M

Iteration 3: Total net bbox = 2.412e+04 (1.24e+04 1.18e+04)

Est. stn bbox = 2.412e+04 (1.24e+04 1.18e+04)

cpu = 0:00:00.0 real = 0:00:00.0 mem = 205.1M

Iteration 4: Total net bbox = 9.032e+03 (4.45e+03 4.58e+03)

Est. stn bbox = 9.032e+03 (4.45e+03 4.58e+03)

cpu = 0:00:00.2 real = 0:00:00.0 mem = 205.1M

Iteration 5: Total net bbox = 1.130e+04 (5.88e+03 5.42e+03)

Est. stn bbox = 1.130e+04 (5.88e+03 5.42e+03)

cpu = 0:00:00.2 real = 0:00:00.0 mem = 205.1M

Iteration 6: Total net bbox = 1.711e+04 (9.70e+03 7.41e+03)

Est. stn bbox = 2.103e+04 (1.14e+04 9.61e+03)

cpu = 0:00:00.5 real = 0:00:00.0 mem = 205.1M

Iteration 7: Total net bbox = 1.858e+04 (9.80e+03 8.78e+03)

Est. stn bbox = 2.266e+04 (1.17e+04 1.10e+04)

cpu = 0:00:00.1 real = 0:00:00.0 mem = 205.1M

Iteration 8: Total net bbox = 1.847e+04 (9.70e+03 8.77e+03)

Est. stn bbox = 2.246e+04 (1.14e+04 1.10e+04)

cpu = 0:00:00.0 real = 0:00:00.0 mem = 205.1M

Iteration 9: Total net bbox = 2.118e+04 (1.22e+04 8.97e+03)

Est. stn bbox = 2.537e+04 (1.42e+04 1.12e+04)

cpu = 0:00:00.0 real = 0:00:00.0 mem = 205.1M

*** cost = 2.118e+04 (1.22e+04 8.97e+03) (cpu for global=0:00:00.7) real=0:00:00.0***

Core Placement runtime cpu: 0:00:00.4 real: 0:00:00.0

Starting refinePlace ...

Placement tweakage begins.

wire length = 2.208e+04 = 1.278e+04 H + 9.296e+03 V

wire length = 1.954e+04 = 1.038e+04 H + 9.161e+03 V

Placement tweakage ends.

Statistics of distance of Instance movement in detailed placement:

maximum (X+Y) = 57.60 um

inst (r_4/U6) with max move: (391.2, 310.5) -> (363.6, 280.5)

mean (X+Y) = 15.18 um

Total instances flipped : 1

Total instances moved : 243

*** cpu=0:00:00.0 mem=205.1M mem(used)=0.0M***

Total net length = 1.967e+04 (1.038e+04 9.282e+03) (ext = 6.499e+03)

*** End of Placement (cpu=0:00:00.7, real=0:00:01.0, mem=205.1M) ***

default core: bins with density > 0.75 = 0 % (0 / 9)

Starting IO pin assignment...

Completed IO pin assignment.

**WARN: (SOCSP-9025): No scan chain specified/traced.

*** Finishing placeDesign default flow ***

**placeDesign ... cpu = 0: 0: 1, real = 0: 0: 1, mem = 205.1M **

xDimension of queryBox is too small to query. (66.624000,356.730000) (66.624000,356.730000)

yDimension of queryBox is too small to query. (66.624000,356.730000) (66.624000,356.730000)

Utilization in area (66624 356730) (66624 356730) = 0.0%

xDimension of queryBox is too small to query. (-30.468000,1196.948000) (-30.468000,1196.948000)

yDimension of queryBox is too small to query. (-30.468000,1196.948000) (-30.468000,1196.948000)

Utilization in area (-30468 1196948) (-30468 1196948) = 0.0%

طول کشیده استiteration 9 به اندازه Placementالگوریتم

Gen-Spec را انتخاب کرده و سپس Clock -> Design Clock را بسازید. از منوی Clk Treeدر قسمت بعد، باید

routing ی:ک Clk-Tree اس::تفاده میکنی::د را مش::خص کنی::د. س::نتز Clk-Treeرا بزنید تا سلولهایی را که در ساخت

اولیه را هم انجام میدهد.

را بزنی::د. این ک::ار ممکن اس::تroute را انتخ::اب ک::رده و بع::د nano-route دس::تور Routeسپس از منوی باید شبیه چنین چیزی شده باشد:dieطول بکشید. در نهایت شکل

مشاهده کنید.Die بر روی Clock->Display->Display Clock Tree را با دستور Clock-treeتوانید اگر بخواهید می

-Timing نداشته باشد. از منوی Hold Time Violation وSetup Time Violationحال باید چک کنید که طراحی شما

>Analyze Timing را انتخاب کنید و آنرا یکبار برای Setup و یک بار برای Holdاجرا کنید. در صورتی که به ش::ما خطا میدهد و اسلک منفی بر میگرداند نترسید!

شش مسیر را پیدا کرده است ک::ه زم::ان بن::دیRouting بعد از SoCEبرای مثال در یک طراحی بزرگتر، در آنها رعایت نشده است.

| Setup mode | all | reg2reg | in2reg | reg2out | in2out | clkgate |

| WNS (ns):| -0.272 | -0.272 | 7.084 | 8.132 | N/A | N/A |

| TNS (ns):| -0.653 | -0.653 | 0.000 | 0.000 | N/A | N/A |

| Violating Paths:| 6 | 6 | 0 | 0 | N/A | N/A |

| All Paths:| 656 | 527 | 388 | 129 | N/A | N/A |

تالش کند ت::ا این مش::کالت را ح::لSoCEرا انتخاب کنید و اجازه بدهید تا Timing->Optimizeاز همان منوی کند. اگر هنوز هم اسلک منفی میگیرید چند روش برای تصحیح آن وجود دارد اما ساده ترین کار این است

Setup را )برای Clk را بزرگتر انتخاب کرده یا سرعت Dieکه اندازه Time کاهش دهی::د. در ص::ورتی ک::ه )Hold

Violation.میگیرد باید طراحی را تغییر دهید

کل طراحی به لحاظ زمان بندی درست است.Optimizationدر این مثال کوچک، بعد از انجام

| Setup mode | all | reg2reg | in2reg | reg2out | in2out | clkgate |

| WNS (ns):| 0.058 | 0.058 | 7.094 | 8.114 | N/A | N/A |

| TNS (ns):| 0.000 | 0.000 | 0.000 | 0.000 | N/A | N/A |

| Violating Paths:| 0 | 0 | 0 | 0 | N/A | N/A |

| All Paths:| 656 | 527 | 388 | 129 | N/A | N/A |

Post-Layoutبرای Simulation، SoCE دو نوع Extractorدارد. یک مدل سادهتر و یک ابزار پیشرفتهتر ب::ه ن::ام Fire&Ice برای استفاده از مدل سادهتر به .Timing رفته و Extract RC .را انتخاب کنید SoCEچندین خروجی دارد

میباشد. آن را انتخاب و تولید کنید.SPEFاما آنچه برای ما جذابتر است خروجی

Timing->QRC در هم::ان من::وی Fire&Iceبرای اس::تفاده از Standalone extractionرا انتخ::اب کنی::د. مهم::ترین است که برای بسیاری از استاندارد سلها در دسترس نیست!Technology Fileورودی این ابزار،

جدید را که دارای تاخیر هایSDF در سطح گیت کافی است که فایل Post-Layoutبرای شبیه سازی های Clkمربوط به Tree دستور(هست تولید نماییم write_sdfشایان ذکر است که این فایل دارای تاخیر مرب::وط .)

به سیم ها هم هست.

GDSIIرا انتخاب کنید. نوع خ::روجی را براب::ر ب::ا Design->Save->GDSII/OASISدر نهایت برای تولید خروجی از

Mapقرار دهید و File را از Library این یک فای::ل ب::ا پس::وند(پیدا کرده و به آن بدهید mapاین ف::ایلی .)اس::ت تحویل دهید.foundryاست که باید به

-Design هم در آن قرار دارد( را از Clk Treeقبل از بستن فراموش نکنید که نت لیست به روز شده )که

>Save->netlist ذخیره کنید. این نتلیست با SDF تولید شده توسط SoC.سازگار است

:GDSIIخروجی

راLayout انتق::ال دهیم، IC را به نرمافزار دیگر مانند SOC ایجاد شده توسط نرمافزار Layoutبرای اینکه GDSبه فرمت II ذخیره میکنیم. برای انج::ام این ک::ار، از من::وی Design من::وی ،Save و س::پس GDS/OASISرا …

(.Design->Save->GDS/OASISانتخاب میکنیم )

Outputدر قسمت file. نام فایل خروجی به فرمت gds را مشخص میک::نیم. در قس::مت Map fileمس::یر ورودی را میدهید، این فایل دربردارنده اطالعات الیههاست. mapفایل

.1000 را مشخص کنید به طور مثال layout مقدار گرید Unitsدرقسمت

در تکنولوژی مربوطه را وارد کنید به طور مثال:GDS مسیر فایل مشخص کننده Merge Filesدر قسمت

/tech/tsmc/tsmc18/sc018g/gds2/tsmc18.gds

فعال باشد.Uniquify Cell namesفراموش نکنید گزینه

.( نیاز اس::ت. این فای::ل راsdf، به تاخیر اجزا طرح بعد از مسیریابی )فایل Post-Layoutبرای شبیهسازی به صورت زیر تهیه کرد: SOCمیتوان در ابزار

Timing -> Calculate Delay… -> SdfFileName.sdf

را واردsdf را انتخاب کنید. سپس در پنجره باز شده نام فایل Calculate Delay زیر منوی Timingاز منوی کنید.

Post-Layout Simulation

ModelSim-Hsim Co-Simulationاندازی راه

بعد از لی اتsdf می توان فایل write_sdfدر صورتیکه مدار صرفا دیجیتال باشد، با استفاده از دستور را تولید نمود و بعد از ان مثل شبیه سازی پس از سنتز عمل کرد. در صورتیکه مدار دارای قسمت آنالوگ

را دارد استفاده نمود:ModelSim که قابلیت اتصال به HSIMباشد، می توان از ابزار

روشهای متف::اوتی وج::ود دارد. روش::ی ک::ه در این جری:ان در پیش گرفت::هPost-Layoutبرای شبیهسازی میباش::د.SPEF و اعمال خازن، مقاومتهای پارازیتیک از طری::ق فای::ل Spiceمیشود شبیهسازی مدار معادل با

که در ابتدا نوشته شده به کد اسپایس ک::اری س::خت و بعض::ا غ::یرTestbenchالبته از آنجایی که انتقال مدار ارتب::اط بین شبیهس::ازPLI شبیهسازی میشود و از طری::ق ModelSim هم چنان در testbenchممکن است مدار

HDL (ModelSim) و شبیهساز Spice (HSIM).برقرار میشود

Verilog كه توانايي شبيهس::ازي ك::دهاي Digital/Analogيكي از ابزارهاي متداول براي شبيهسازي همزمان

ميباشد. در اين روش، قسمتي از طراحيSynopsys HSIM به صورت همزمان را دارد ابزار Verilog-A و Spiceو Spiceدر سطح ديجيتال باقيمانده و بقيه ب::ه netlistتب::ديل ميش::وند ك::ه در اين مي::ان قس::مت اعظم اين نت

ليست دست نخورده ميماند. سپس ابزار كل مجموعه را با هم شبيهسازي مينمايد.

HSIM مدار آنالوگ هاي قسمت شبيهسازي از تواندمي خوبي به device & circuit level))( spice و verilog-A) برآيد Verilog مانند هايي واسط طريق از بايد مدار ديجيتال هاي قسمت شبيهسازي براي منتها PLI ه::اي شبيهساز با

.نمايد برقرار ارتباط Synopsys VCS يا Cadence Verilog-XL يا Mentor ModelSim مانند استاندارد

تهيه ModelSim ديجيت::ال شبيهس::از و HSIM م::دار شبيهس::از تلفيق از كه ديجيتال شبيهسازي هم روش اين.ميباشد Verilog PLI 2.0 استاندارد اساس بر تلفيق اين. است شده

:كاربردها

كه اطرافش ديجيتال هاي بالك با كه است مختلطي-سيگنال يا آنالوگ مدار يابي اشكال كاربرد ترين مهم.است متصل اند شده نوشته VHDL يا Verilog كد توسط

ترانزيس::تور س::طح شبيهس::ازي انج::ام ب::راي است ش::ده تهيه verilog در كه يtestbench يك از ت::وان مي.كرد استفاده

-سيگنال هاي بلوك آن در كه ) SOC يا پردازنده يك مثال براي) عظيم ديجيتال مدار يك كل verification براي.كرد شبيهسازي HSIM در ميتوان را مختلط

به موارد زیر نیاز است.Post-Layoutلذا، برای انجام شبیهسازی

- م::دار میClock-Network و Delay )این فای::ل ح::اوی تع::دادی الم::ان Post-Layout مدار در مرحله Netlist فایل(باشد.

-SoC ب::وده و اب::زار SPEFه::ا )این فای::ل ب::ه ف::رمت Interconnect از ناشی پارازیتیکهای زن،مقاومتفایل خا

Encounter در بخش Extractionرا از روی میتواند آنlayout).مدار تهیه کند

ها میباشد. متاسفانه بسیاریها، این فایل حاوی مدار درون کلیه سلstandard cellخانه مدل اسپایس کتاب ( این فای::ل را در دس::ترس ق::رار نمیدهن::د. در اینArm و Artisanخانههای تجاری )منجمل::ه های کتاباز سازنده خان::ه( و کت::اب65nو 90n )ش::امل UMC(farady)خانههای س::اخت (، کلیه کتابosu )ساخت 0.25uخانههای جریان کتاب

45n(nan)ها را دارند. این مدل

)به راحتی برای هر تکنولوژی قابل دسترسی است.(foundry ساخت PMOS و NMOSمدل ترانزیستور

اس::تفاده میک::نیم ک::ه از قب::ل تهی::ه ش::دهlibvpihsim هم شبیهسازی(در این جریان از کتابخان::ه PLIرابط است.(

libvpihsim.soكتابخانه هم شبيهسازي:

/ قرار بگيرد.NASSDA_HOME/platform/[correct OS]اين فايل بايد در مسير $

TCL_LIBRARYكتابخانه

قرار دارد اشاره كند.init.tcl بايد به مسيري كه در آن فايل TCL_LIBRARYمتغير

setenv TCL_LIBRARY $NASSDA_HOME/etc/tcl

بيشتر باشد.8.4 بايد از TCLشماره ويرايش كتابخانه

شبیهس::ازی اس::تفادهک::ه ب::رای پیکربن::دی محی::ط همconfigurationتعدادی فایل خرت و پ::رت ک::ه ب::رای میباشد.cosim.cfgمیشوند و از قبل تهیه شده است. اسم پیش فرض این فایل

نمونهای از این فایلها به صورت زیر است:

انج::امcoreبرای مثال فرض کنید که ما میخواهیم یک فرایند شبیهسازی را بر روی یک ماژول ب::ه ن::ام وtestbench و خود مدار میباش::د را داریم)م::دار testbench که به ترتیب مدار core.v و core_tb.vدهیم و دو فایل

باشد، فرقی ندارد.(systemC یا vhdl یا verilogسایر قسمتهای مدار میتواند به زبان

مورد نظر را باز کرده و کلی::ه دل و روده آن را پ::اک میک::نیم و ب::ه ج::ای آن ی::کcoreابتدا فایل ماژول initialدستور $nsda_module را باقی میگذاریم. توجه کنید که قسمتهای ;)(input و output.را ب::اقی بگذاری::د را بسازد. برای نمونه:d2a و a2d باید از روی آن رابطهای hsimچرا که

module core (clk, reset, data, offset, length, code, valid);

input clk;

input reset;

input [7:0] data;

output [7:0] offset;

output [7:0] length;

output [7:0] code;

output valid;

initial $nsda_module();

endmodule

در بخش آنالوگ مدار،

مش::خص میکن::د: )این فای::ل در واق::عhsim این فایل ماژول اص::لی شبیهس::ازی را ب::رای cosim.cfgفایل instantiation/ فایل اسپایس را انجام میدهد و بطور پیش فرض در آدرس home/sharif)قرار داده میشود

set_args top.sp

البته در این فایل میتوان خرت و پرتهای دیگری نیز تعریف کرد. به عالوه ميتوان پارامتره::اي مرب::وط را مانند شيب، ولتاژ آستانه، مقادير مينيمم و ماكزيمم و ... نيز در آن تعريف كرد. درd2a و a2dبه ساختار

اكثر مواقع مقادير پيش فرض كفايت مينمايد.

set_port_prop -cell MBLOCK -port * \

-logichv 1.2 -logiclv 0 -logicxv 0.0 -slope 100ps \

-vhi 0.84 -vlo 0.36

باید شامل مدل ترانزیستورها، مدار داخلی گیتها و ماژول اص::لی م::ا ب::ه ص::ورت زی::رtop.spحال فایل subckt:باشد. یک نمونه از این فایل به صورت زیر است

.hsimparam HSIMTIMESCALE=100

.param hsimspeed=5

*.hsimparam HSIMALLOWEDDV=5.0

.param VDDVAL=3v

* global nodes

.global vdd vss gnd

* supplies

vvdd vdd 0 dc VDDVAL

vgnd gnd 0 dc 0v

.inc tsmc025.m

.inc osu025_stdcells.sp

.inc core.sp

.print v(*)

.end

باالتر استفاده کنید.hsimspeed را پاک کنید یا از پارامتر printمی توانید برای افزایش سرعت، دستور .

مدل ترانزیستور بر اساس ساخت پروسه ق::رار دارن::د و در فای::لmodel دستورات .tsmc025.mدر فایل stdcells نیز مدارهای داخلی گیتها وجود دارد. فایل core.sp باید حاوی یک subckt به اسم coreهمان م::اژولی(

که ما بر روی آن میخواهیم شبیهسازی انجام دهیم( باشد. برای نمونه:

.param HSIMSPEF=core.spef

.subckt core clk reset data[7] data[6] data[5] data[4] data[3]

+ data[2] data[1] data[0] offset[7] offset[6] offset[5] offset[4]

+ offset[3] offset[2] offset[1] offset[0] length[7] length[6]

+ length[5] length[4] length[3] length[2] length[1] length[0]

+ code[7] code[6] code[5] code[4] code[3] code[2] code[1] code[0]

+ valid

Vconst00 _T3 0 0

Vconst01 _T2 0 0

Vconst02 _T1 0 0

Vconst03 _T0 0 0

XU171 n137 vdd gnd n138 n136 n139 NAND3X1

XU170 gnd vdd n135 data[0] n136 n134 AOI21X1

XU169 gnd vdd n135 data[0] n134 n133 OAI21X1

XU168 x[1][1] data[1] gnd vdd n133 XNOR2X1

XU167 gnd vdd n132 data[2] n137 n131 AOI21X1

XU166 gnd vdd n132 data[2] n131 n130 OAI21X1

XU165 x[1][3] data[3] gnd vdd n130 XNOR2X1

XU164 gnd vdd n129 data[4] n138 n128 AOI21X1

XU163 gnd vdd n129 data[4] n128 n127 OAI21X1

XU162 x[1][5] data[5] gnd vdd n127 XNOR2X1

...دیگه گیت کلی

...

...XdataRegister_reg[4] vdd data[4] gnd dataRegister[4]

+ clk DFFPOSX1

XdataRegister_reg[5] vdd data[5] gnd dataRegister[5]

+ clk DFFPOSX1

XdataRegister_reg[6] vdd data[6] gnd dataRegister[6]

+ clk DFFPOSX1

XdataRegister_reg[7] vdd data[7] gnd dataRegister[7]

+ clk DFFPOSX1

.ends core

را در خود ضمیمه کرده است. این فایل که ازspefتوجه کنید که خط اول این فایل، یک فایل پارازیت ه::ای درون م::دارinterconnect به دست میآید حاوی اطالع::ات خ::ازن و مق::اومت SoC موجود در extractorابزار است.

post-layout وریالگ را در مرحل::ه netlist، میبایس:ت ابت::دا verilogبرای ساختن م::دار اس:پایس از روی ک::د

ذخیره کنید. )این نت لیست نسبت به نت لیست بعد از پست-سنتز ممکن اس:ت نفاوته:ایی داش:ته باش:د، این نت لیست را به کد اسپایس تبدیل کنید.v2s یا بافرهای اضافه(. سپس با دستور clock treeشامل

نمونه اجرای این دستور به صورت زیر است: )کافی است هم::ه فای::ل ه::ای م::ورد نی::از ش::امل فای::ل و تکنولوژی فایل با فرمت اسپایس را در یک فولدر قرار دهید و با باز کردن یک ترمینالpost layoutوریالگ

جدید به آدرس آن فولدر رفته و دستور زیر را اجرا کنید.(

v2s post_layout.v -s osu025_stdcells.sp -const0 0 -const1 2.5 -o core.sp

( این است که برای شما م::دار ش::بکه ت::وان را نمیس::ازد.hsimیکی از باگها )در اصل یکی از قابلیتهای %%% وجود دارد که همگیgnd%%% و vddلذا اگر فایل حاصل را باز کنید در آن گرههای بسیاری به نام

تغییر نام داده شوند. شما میتوانید خودت::ان این ک::ار را انج::ام دهی::د ی::ا از دس::تورgnd یا vddباید به صورت spiceWrapperکه در جریان قرار داده شده برای تغییر نام این گرهها استفاده کنید. از این دستور به ص::ورت

زیر استفاده کنید:./spiceWrapper input.sp library.sp output.sp

و از طریق ترمینال است.v2sروش اجرا هم مشابه روش گفته شده برای دستور

حال همه چیز برای انجام شبیهسازی آماده است!

را اجرا کنید. بعد از این که کارهای اولیه مثل کمپایل و ... را انج::ام دادی::د قب::لModelSimمثل همیشه از آن اس::تفاده میکن::دhsimی ک::ه اب:زار pli دستور زیر را اجرا کنید. این دستور کتابخان:ه simulationاز اجرای معرفی میکند.modelsimرا که یادتان هست.( را به nsda_module$)دستور

vsim -pli /opt/hsimplus/platform/linux/bin/libvpihsim.so work.testbench

است.(testbench.v و نام تست بنچ مدار work طراحی ما library)در دستور باال فرض شده که نام

مش::اهده کنی::د. اگ::ر در نت لیس::ت ش::ماmodelsim را بزنی::د و خ::روجی را در RUNحال میتوانید دستور برایتان میسازد که شکل موج درfsdb یک خروجی به صورت فایل hsim نیز وجود داشته باشد printدستور .

مشاهده کنید.Novas Debussy یا Synopsys CosmosScopeآن وجود دارد، این شکل موج را میتوانید با ابزارهای

، برای شروع کردن ش::بیه س::ازی ب::ه من::ویvsimنکته: پس از کامپایل کردن طراحی و اجرای دستور Simulate => Start Simulation رفته و در پنج:ره ای ک:ه ب:از میش:ود library و س:پس testbench.را انتخ:اب کنی::د

Objects وجود دارد این است ک::ه پس از ش::بیه س::ازی س:یگنال ه:ا در پنج:ره ModelSimمشکلی که گاهی در

Start Simulation کرد، برای رفع این مشکل کافی است در پنجره Add to Waveاضافه نمیشوند که بتوان آنها را

کنید.Ok را بردارید و سپس Enable Optimzationتیک مربوط به

ب::ه ی::ک مث::الHSIMدر اینجا برای فهم بهتر روند شبیه سازی مخلوط آنالوگ و دیجیتال ب::ا اس::تفاده از SARطراحی اشاره میکنیم. فرض کنید میخ::واهیم ی::ک مب::دل آن::الوگ ب::ه دیجیت::ال بی::تی ب::ا س::اختار زی::ر۱۰

طراحی کنیم.

میباشد و بخشcomparator و DACدر شکل باال بخش آنالوگ با رنگ نارنجی نمایش داده شده و شامل دیجیتال شامل یک کنترلر است که بسته به مقدار خروجی مقایسه گر در هر مرحله در مورد تولید ورودی

تصمیم گیری میکند. DACمربوط به

برای طراحی مدار کافی است یک فایل وریالگ که درون آن دو فایل وریالگ دیگر با نامهایcontroller.v و dac.v فراخوانی شده اند ایجاد کنیم. این فایل را که نقش top moduleدارد و بعدا میتواند در

ذخیره میکنیم.adc.vتست بنچ نهایی فراخوانی شود با نام

بهmodelsim کل عملیات دیجیتال مدار را انجام میدهد و میتوان آنرا با نرم افزار controller.vفایل فراخوانی شده همانadc.v تست و شبیه سازی کرد. فایل دیگری که در hsimتنهایی و بدون استفاده از

dac.v است که شامل همه بخش های آنالوگ مدار بوده و با استفاده از دستور initial

$nsda_module در واقع به صورت یک نشانگر به فایل ;)(top.sp که با فرمت spiceنوشته و ذخیره شده است cosim.cfgاشاره میکند.)الزم به ذکر است که لینک بین این دو فایل همانطور که قبال گفته شد توسط فایل

صدا زده شدهdac.va فایل دیگری با نام top.sp معرفی و برقرار میشود.( داخل فایل hsimبه نرم افزار است که بصورتverilog-a در زبان S/H و ideal_dac و comparatorاست که این فایل شامل تعاریف مربوط به

hsimآنالوگ در مدار مورد استفاده قرار گرفته اند ولی در نهایت باید در کنار بخش های دیجیتال توسط

شبیه سازی شوند.

فایل های مختلف مرور شده اند.Hierarchyدر شکل زیر

باmixed_signal داخل یک فایل تست بنچ فراخوانی شده و عملیات شبیه سازی adc.vدر نهایت ماژول استفاده از دستور

vsim -pli /opt/hsimplus/platform/linux/bin/libvpihsim.so work.testbench

انجام میشود.

Flow ا:ي:ن: م:ش:ك:ال:ت:

كن::ترل و مديريت. ميكند پشتيباني spice هم و verilog كد از هم top ماژول براي ما شبيهسازي چارچوب به d2a آنالوگ به ديجيتال و a2d ديجيتال به آنالوگ هاي سيگنال مبدل و بوده سرراست نسبتا واسط هاي گره

.ميشوند ساخته خودكار صورت

آن در كه ه::اييماژول كليه نتيجه در ميپ::ذيرد انج::ام م::اژول يك روي بر اش::كال تزريق عمل كه آنج::ايي ازinstanceاين جداس::ازي امك::ان و گ::يردمي ص::ورت اش::كال تزريق عمل باشد ش::ده اس::تفاده ماژول اين از هايي instanceپذيرد انجام كاربر توسط كد سطح در بايد و باشد نمي مقدور يكديگر از ها.

adc.v(top module)

controller.v (all digital)

dac.v (initial $nsda_module(); acts as a pointer

to top.sp, through cosim.cfg)

top.sp(calls dac.va and instantiates analog modules

which are defined in dac.va)

dac.va (analog subcircuits definition such as comparator, S/H and

ideal adc in verilog-a language )

HSIM با س::ازيش::بيههم س::پس و شود اجرا مدتي براي ديجيتال قسمت شبيهسازي تا داد اجازه توان مي

.آيدمي كار به است طوالني مدار setup time كه زماني براي خاص طور به مورد اين. گردد شروع

)تزريق م::ورد قس::مت (آن::الوگ و) نخ::ورده دست ( ديجيت::ال قس::مت به ط::راحي ك::ردن پارتيشن ب::راي نتيجه در و پارتيشن طرف دو در كه تنگي خوردپس هاي حلقه. شود گرفته نظر در بايد كه دارد وجود مالحظاتي

پيش زمان از شبيهسازي سرعت كاهش باعث توانندمي ميگيرند قرار ديجيتال/آنالوگ متفاوت شبيهساز دو در داش::ته بقيه با را س::يگنال ترافيك كم::ترين كه ش::ود انج::ام بايد اي نحوه به بندي پارتيشن لذا. گردند شده بيني آنالوگ شبيهساز پايينتر سرعت نگران ديگر و كاركرده سريعتر ديجيتال قسمت شبيهساز صورت اين به. باشد

.بود نخواهد

بوده وspice یک ماژول topالبته میتوان عکس شبیهسازی فوق را هم انجام داد، به صورتی که ماژول داشته باشیم که در این جریان مورد بحث قرار نگرفته است.verilog از instanceدر آن چند