میدونم شاید دیر هست ولی گفتم جواب بدم شاید به درد آیندگان بخوره.
SystemC مانند زبون های VHDL و Verilog یک زبان توصیف سخت افزاری هست. علاوه براین، این زبان برای مدل سازی سخت افزار زبان بسیار قدرتمندی میباشد. اساس برنامه نویسی این زبان بر پایه ++C هست و برای شروع به کار اکیدا توصیه میشه که آشنایی نسبتا کاملی با ++C داشته باشین. برخلاف زبان های VHDL و Verilog شما میتوانید با اضافه کردن هدر systemc.h به اول پروژتون اون رو در تمام کامپایلر های C++ اجرا کنید. به نظرم من سایت http://www.asic-world.com/ یکی از بهترین مراجع آموزش این زبان هست. برای این زبان Synthesizer های متفاوتی وجود داره که عموما قیمتهای بالا دارن. این زبون از Kernel بسیار قدرتمندی برخوردار هست که زمان بندی thread ها و task ها رو خیلی دقیق انجام میده. شما به راحتی (!!) میتونین یک Embedded System که شامل سخت افزار و نرم افزار هست رو با این زبون توصیف کنید. مثلا در نظر بگیرید یک Encoder JPEG دارین که میخواین چند بخشش به صورت نرم افزاری پیاده شه و چند بخشش کاملا سخت افزاری پیاده شه. این امکان در VHDL و VERILOG نیست و اگر هم باشه بسیار سخت خواهد بود. در حالیکه در SystemC قابلیت های زیادی هست که بتونین به صورت دقیق و کامل این مدل رو پیاده کنین. امکاناتی چون بهره گیری از Semaphore ها، Mutex، ، Thread و.... که افرادی که اقدام به نوشتن OS میکنن میدونن این امکانات به ظاهر ساده چقدر به درد بخور هست.
systemC یه مشکل داره
در طراحی دیجیتال شما باید دیدتون کاملا سخت افزاری باشه نه نرم افزاری
علت قوی نبودن بچه ها در طراحی با fpga دقیقا همینه
اصلا fpga رو با برنامه نویسی قیاس نکنید
نظر من فقط و فقط VHDL هست نه حتی Verilog
خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...
برخلاف زبان های VHDL و Verilog شما میتوانید با اضافه کردن هدر systemc.h به اول پروژتون اون رو در تمام کامپایلر های C++ اجرا کنید.
یعنی چی بر خلاف vhdl verilog ؟ اگرم در این مورد کسی مشکلی داره بخاطر اینه که طبق استانداردهای قدیمی کد میزنه
اتفاقا در مورد systemc دقیقا برعکس چیزی هست که گفتی. مثلا modelsim که از gcc برای کامپایل systemc استفاده می کنه قواعد کد نویسی خودش رو داره (خارج از استاندارد systemc) و ابزارهای سنتز هم (مثل agility) قواعد خودشون و کد هیچ کدوم رو نمیتونی ببری رو یه نرم افزار دیگه مگر با مواجه شدن با 100 تا error... واسه هر کدوم یه جور باید top module نوشت...
ضمنا کد systemc به همین راحتی قابل سنتز نیست خیلی از امکاناتش هم تو ابزارهای سنتز پشتیبانی نمیشه.
نوشته اصلی توسط حمید نجفی
systemC یه مشکل داره
در طراحی دیجیتال شما باید دیدتون کاملا سخت افزاری باشه نه نرم افزاری
علت قوی نبودن بچه ها در طراحی با fpga دقیقا همینه
اصلا fpga رو با برنامه نویسی قیاس نکنید
نظر من فقط و فقط VHDL هست نه حتی Verilog
در ادامه عرایضم:
نخیر systemc مشکل نداره!
و در هر طراحی اصولی و حرفه ای باید از سطوح بالا شروع کرد. systemc یه زبان system level هست که برای طی کردن مسیر specification تا پیاده سازی نهایی بهترین گزینه. مدل سازی ها و شبیه سازی هایی که میشه با systemc کرد با هیچ زبون دیگه ای نمیشه کرد. و به تدریج با refine (پالایش!) کردن کد systemc به طرح سخت افزار نهایی نزدیک و دقیق میشن
نظر من verilog و در کنارش کمی آشنایی با vhdl (چون 5 درصد مواقع ممکنه کد بدرد بخوری که پیدا میکنی vhdl باشه و ازش بی بهره نمونی)
نظر من کاملا بر عکس
اون هم با استناد به چندین سال کار و تدریس در این زمینه
VHDL بهترین زبان برای طراحی سخت افزاریه
چون ما اصلا برنامه نویسی نمیکنیم.بلکه طرحی رو توصیف میکنیم
تمام مشکلاتی که تا الان بوده دقیقا در همین زمینه بوده، چون دانشجو با دید برنامه نویسی به موضوع نگاه میکنه
فراموش نشه که پایین ترین لایه طراحی هستیم، قرار نیست برای کنترلر برنامه نویسی بشه
در کل این نظر منه، سلایق متفاوته
خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...
نظر من کاملا بر عکس
اون هم با استناد به چندین سال کار و تدریس در این زمینه
VHDL بهترین زبان برای طراحی سخت افزاریه
چون ما اصلا برنامه نویسی نمیکنیم.بلکه طرحی رو توصیف میکنیم
تمام مشکلاتی که تا الان بوده دقیقا در همین زمینه بوده، چون دانشجو با دید برنامه نویسی به موضوع نگاه میکنه
فراموش نشه که پایین ترین لایه طراحی هستیم، قرار نیست برای کنترلر برنامه نویسی بشه
در کل این نظر منه، سلایق متفاوته
این روش استناد صحیح نیست!
البته نظر شما کاملا متین و من متوجه منظورتون هستم
برای دانشجویی که می خواد طراحی سخت افزاری یاد بگیره بله باید HDL یاد بگیره و بفهمه. و مفهوم برنامه نویسی و توصیف سخت افزار ....
اما کاربرد systemc یه مرحله قبل از طراحی سخت افزار با HDL. تو یه پروژه کلان اصلا نمیشه از HDL شروع کرد. وقتی هدف سطوح بالا، مدل سازی و تعیین specificationها و بررسی معماری های مختلف باشه نمیشه از HDL استفاده کرد. اصلا قدرتش رو نداره. اتفاقا با systemc خیلی کاملتر و بهتر میشه توصیف کرد! و بخاطر همینم هست که هنوز ابزار سنتز درست و حسابی نداره.
مشکل اینه که فقط به فکر پیاده سازی هستیم. در حالیکه میشه 90 درصد کارها تو مدل سازی ها و شبیه سازی ها انجام بشه. کم هم هزینه نمیشه واسه مدل سازی ها.
سرچ کنید system level design کلی کتاب در موردش هست...
این روش استناد صحیح نیست!
البته نظر شما کاملا متین و من متوجه منظورتون هستم
برای دانشجویی که می خواد طراحی سخت افزاری یاد بگیره بله باید HDL یاد بگیره و بفهمه. و مفهوم برنامه نویسی و توصیف سخت افزار ....
اما کاربرد systemc یه مرحله قبل از طراحی سخت افزار با HDL. تو یه پروژه کلان اصلا نمیشه از HDL شروع کرد. وقتی هدف سطوح بالا، مدل سازی و تعیین specificationها و بررسی معماری های مختلف باشه نمیشه از HDL استفاده کرد. اصلا قدرتش رو نداره. اتفاقا با systemc خیلی کاملتر و بهتر میشه توصیف کرد! و بخاطر همینم هست که هنوز ابزار سنتز درست و حسابی نداره.
مشکل اینه که فقط به فکر پیاده سازی هستیم. در حالیکه میشه 90 درصد کارها تو مدل سازی ها و شبیه سازی ها انجام بشه. کم هم هزینه نمیشه واسه مدل سازی ها.
سرچ کنید system level design کلی کتاب در موردش هست...
یکی از بحث های اصلی و کلید الان همینه، 1.درک مدل سازی و شبیه سازی 2.معماری قابل سنتز
که هر کدوم مسیر خودش رو داره و در انتها به هم میرسن. اما تقاضای اصلی با مورد دوم
مسلما برای انعطاف شبیه سازی، زبان سطح بالا تری مثل systemC کار رو خیلی ساده تر میکنه تا استفاده از بخش غیر قابل سنتز VHDL
خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...
ولی هدف اصلی ما پیاده سازیه و با اون دید پیش میریم
ما اومدیم ختم به خیر کنیم اما ...
بله وقتی می خوان یه ساختمون بسازن هدف اصلی ساختن ساختمونه اما نمیان از همون اول شروع کنن چپ و راست آجر چیدن و ستون هوا کردن! قبلش مدل سازی و محاسبات انجام میشه.
تو سخت افزار هم طراحی سطح سیستم کار مراحل بعد رو خیلی ساده تر و شفاف تر می کنه. و کمک می کنه بهترین پیاده سازی رو انجام بدیم. پیاده سازی باید آخرین و ساده ترین مرحله باشه و از نتیجه ش مطمئن باشیم. نه اینکه تو پیاده سازی همش کلنجار بریم ...
دیگه دیر وقته مغزم کار نمیکنه یه سیستم خفن مثال بزنم ...
آقا من مخالفم :mrgreen:
یعنی چی بر خلاف vhdl verilog ؟ اگرم در این مورد کسی مشکلی داره بخاطر اینه که طبق استانداردهای قدیمی کد میزنه
اتفاقا در مورد systemc دقیقا برعکس چیزی هست که گفتی. مثلا modelsim که از gcc برای کامپایل systemc استفاده می کنه قواعد کد نویسی خودش رو داره (خارج از استاندارد systemc) و ابزارهای سنتز هم (مثل agility) قواعد خودشون و کد هیچ کدوم رو نمیتونی ببری رو یه نرم افزار دیگه مگر با مواجه شدن با 100 تا error... واسه هر کدوم یه جور باید top module نوشت...
ضمنا کد systemc به همین راحتی قابل سنتز نیست خیلی از امکاناتش هم تو ابزارهای سنتز پشتیبانی نمیشه.
در ادامه عرایضم:
نخیر systemc مشکل نداره!
و در هر طراحی اصولی و حرفه ای باید از سطوح بالا شروع کرد. systemc یه زبان system level هست که برای طی کردن مسیر specification تا پیاده سازی نهایی بهترین گزینه. مدل سازی ها و شبیه سازی هایی که میشه با systemc کرد با هیچ زبون دیگه ای نمیشه کرد. و به تدریج با refine (پالایش!) کردن کد systemc به طرح سخت افزار نهایی نزدیک و دقیق میشن
نظر من verilog و در کنارش کمی آشنایی با vhdl (چون 5 درصد مواقع ممکنه کد بدرد بخوری که پیدا میکنی vhdl باشه و ازش بی بهره نمونی)
سلام به همه دوستان:
آقا شرمنده من متوجه حرفتون نمیشم. منظورتون این هست که کد SYSTEMC رو نمیشه روی Visual studio اجرا کرد و یا اینکه کد SYSTEMC رو نمیشه با Visual Studio سنتز کرد؟؟ اگر اولی منظورتون هست که اشتباه میکنید و من خودم دارم با همین Visual Studio پروژه ام رو انجام میدم. اگر منظورتون دومی هست که من هم کاملا موافقم و این حرف کاملا بدیهی است که کد SystemC رو نمیشه با Visual Studio سنتز کرد.
در کل من نمیدونم شما چقدر با این زبون آشنا هستین ولی من خودم هیچ وقت با SystemC کدم رو سنتز نکردم و همیشه مدل سازی انجام دادم. تا چند وقت با gcc کار میکردم ولی الان با Visual Studio کار میکنم. ولی این رو میدونم که Synthesizer کد های SystemC دست هر کسی نیست و بسیار گرون قیمت هست.
در کل SystemC بیشتر برای مدل سازی هست تا سنتز. نمیدونم با System Verilog آشنایی دارین یا نه. بخش زیادی از کد های این زیون قابل سنتز نیست ولی اصولا این زبون برای Verification هست نه سنتز کردن! به همین دلیل من میگم SystemC بیشتر برای مدل سازی هست.
من این حرف رو از خیلی ها شنیدم که برای Specification بهترین انتخاب VHDL هست. برای Verification بهترین گزینه System Verilog و یا Verilog هست. و برای مدل سازی بهترین انتخاب SystemC هست.
این رو در نظر داشته باشین که برای یک پروژه تجاری یک نفر نمیشینه تمام این کار ها رو انجام بده (Modeling--->Spec--->Verification)
بلکه یک گروه برای هر کدوم از اینها در نظر گرفته میشه. میشه گفت تقریبا راحت ترین قسمت هم Spec هست. معمولا برای هر مهندس طراح حداقل 2 مهندس Verifi er احتیاج هست (استناد این حرف من به کتاب SystemVerilog for Verifi cation صفحه 63 هست اگه خواستین بگین کتاب رو براتون بفرستم).
پس در کل به نظرم این کل کل روی اینکه VHDL بهتره و یا VERILOG بهتره و یا SystemC کلا بی فایده هست، کلا ارزش نداره و هر کدومشون رو باید طبق نیاز استفاده کرد.
این نظر من هست
آقا شرمنده من متوجه حرفتون نمیشم. منظورتون این هست که کد SYSTEMC رو نمیشه روی Visual studio اجرا کرد و یا اینکه کد SYSTEMC رو نمیشه با Visual Studio سنتز کرد؟؟ اگر اولی منظورتون هست که اشتباه میکنید و من خودم دارم با همین Visual Studio پروژه ام رو انجام میدم. اگر منظورتون دومی هست که من هم کاملا موافقم و این حرف کاملا بدیهی است که کد SystemC رو نمیشه با Visual Studio سنتز کرد.
در کل من نمیدونم شما چقدر با این زبون آشنا هستین ولی من خودم هیچ وقت با SystemC کدم رو سنتز نکردم و همیشه مدل سازی انجام دادم. تا چند وقت با gcc کار میکردم ولی الان با Visual Studio کار میکنم. ولی این رو میدونم که Synthesizer کد های SystemC دست هر کسی نیست و بسیار گرون قیمت هست.
منظورم واضح بود: کدی که تو visual studio نوشتی براحتی قابل انتقال به محیط های دیگه نیست. modelsim و agility رو خودم امتحان کردم. اگه سنتز تول هممیخوای میتونم پلود کنم.
نوشته اصلی توسط mohammadh1387
در کل SystemC بیشتر برای مدل سازی هست تا سنتز. نمیدونم با System Verilog آشنایی دارین یا نه. بخش زیادی از کد های این زیون قابل سنتز نیست ولی اصولا این زبون برای Verification هست نه سنتز کردن! به همین دلیل من میگم SystemC بیشتر برای مدل سازی هست.
من این حرف رو از خیلی ها شنیدم که برای Specification بهترین انتخاب VHDL هست. برای Verification بهترین گزینه System Verilog و یا Verilog هست. و برای مدل سازی بهترین انتخاب SystemC هست.
این رو در نظر داشته باشین که برای یک پروژه تجاری یک نفر نمیشینه تمام این کار ها رو انجام بده (Modeling--->Spec--->Verification)
بلکه یک گروه برای هر کدوم از اینها در نظر گرفته میشه. میشه گفت تقریبا راحت ترین قسمت هم Spec هست. معمولا برای هر مهندس طراح حداقل 2 مهندس Verifi er احتیاج هست (استناد این حرف من به کتاب SystemVerilog for Verifi cation صفحه 63 هست اگه خواستین بگین کتاب رو براتون بفرستم).
اینم تو اون کتاب نوشته که اول modeling بعد spec ؟! البته آره اگه اگه طراحی سخت افزار در سطوح پایین رو در نظر بگیریم VHDL واسه spec کردن معروفتره. اما طراحی که در سطح بالا شروع میشه اولین مرحله spec و ارتباطی به HDL نداره. (کتاب ESL Design & Verification از Brian Bailey فصل ESL flow) منظور منم از spec تو پست های بالا این spec بود نه spec سخت افزار سطح پایین.
کسی هم کل کل نکرد! منم از اول دارم میگم systemc کاربرد خودش رو داره...
منظورم واضح بود: کدی که تو visual studio نوشتی براحتی قابل انتقال به محیط های دیگه نیست. modelsim و agility رو خودم امتحان کردم. اگه سنتز تول هممیخوای میتونم پلود کنم.
اینم تو اون کتاب نوشته که اول modeling بعد spec ؟! البته آره اگه اگه طراحی سخت افزار در سطوح پایین رو در نظر بگیریم VHDL واسه spec کردن معروفتره. اما طراحی که در سطح بالا شروع میشه اولین مرحله spec و ارتباطی به HDL نداره. (کتاب ESL Design & Verification از Brian Bailey فصل ESL flow) منظور منم از spec تو پست های بالا این spec بود نه spec سخت افزار سطح پایین.
کسی هم کل کل نکرد! منم از اول دارم میگم systemc کاربرد خودش رو داره...
سلام دوست عزیز
عزیز منظورم از اینکه کامپایلرهای SystemC گرون هست این نیست که نشه crack شده اش رو پیدا کنی! منظورم در استفاده توی صنعت هست. یعنی اگه بخوای مثلا کد SystemC رو سنتز کنی، باید به مراتب پول کمتری بابت کامپایلر بدی تا اینکه مثلا بخوای یک کد VHDL رو سنتز کنی.
میتونین از این لینک زیر مراحل معمول برای پیدا سازی یک SOC رو ببینین: http://www.amazon.com/Embedded-Syste.../dp/1441905030
سلام بر دوستان
من ازون آدمایی نیستم که برم یه فایل آماده از اینترنت بگیرم بدم استاد ولی الان شدیدا به یک مقاله و یا آموزش فارسی SystemC نیاز دارم چون زمانم کمتر از یکروزه!
تا الآن خودم یکسری اطلاعات اولیه SystemC را ترجمه کردم ولی برای بقیه بخشها اصلا فرصت ندارم. دوستان اگر کسی اطلاعاتی به زبان فارسی داره خواهشا دریغ نکنید.
انشاالله وقتی فایل خودم آماده شد برای استفاده دیگر دوستان قرار خواهم داد.
دیدگاه