| 查看: 288 | 回复: 0 | |||
| 当前主题已经存档。 | |||
sdlj8051金虫 (著名写手)
|
[交流]
SystemC——一套将C++扩展为硬件描述语言的Class Library
|
||
|
1. SystemC 是一套C++ Class Library,将C++扩展成了一门硬件描述语言(HDL)。我感觉,学习SystemC至少要懂两样东西:C++、一门硬件描述语言。我熟悉C++,并且熟悉Verilog,因此学SystemC能举一反三、触类旁通。 2. SystemC 使用了C++的很多特性:多重继承、虚拟继承、模板、RTTI (at least for dynamic_cast)、异常处理、操作符重载。似乎没有使用STL。 3. SystemC 是一套Application Framework,个人感觉,甚至和MFC颇有相似之处: 一些somewhat古怪的宏:SC_METHOD、SC_THREAD、SC_CTOR 等等 一个全局的manager sc_simcontext (类似MFC中的CWinAPP),用sc_get_curr_simcontext()能得到该全局对象的地址(类似MFC中的AfxGetApp() ) main() 藏身于SystemC中,你要做的是写一个sc_main()函数作为程序的入口,SystemC会调用你的sc_main() 使用表驱动技术,就像MFC中的Message传递。SystemC用上面那些宏将class(SystemC称为module)的member function(SystemC称为process)注册到全局的表中。然后SystemC这套Application Framework会根据发生的事件来调用你的代码。 4. 从实现技术上看,SystemC有自己的garbage collector、自己的 memory pool、自己的容器(替代STL)。 个人体会:SystemC 在WinXP + VS.NET 2003下的使用步骤 1. SystemC 以源码方式发布,先使用VC7.1编译得到一个库文件:systemc.lib 2. 我们写的 SystemC 程序实际上是C++程序,写好一个SystemC程序(或者叫设计),用C++编译器编译为object文件,再与systemc.lib链接得到可执行文件。 3. 执行此exe文件,进行仿真。从输出(文件或stdout)得知仿真结果。 附:一个最简单的SystemC module #i nclude "systemc.h" // 半加器 struct half_adder : sc_module { sc_in a, b; sc_out sum, carry; void prc_half_adder() { sum = a ^ b; carry = a & b; } SC_CTOR(half_adder) { SC_METHOD(prc_half_adder); sensitive << a << b; // a, b 在敏感列表中 } }; 等效的Verilog设计: module half_adder(a, b, sum, carry); input a, b; output sum, carry; reg sum, carry; always @(a or b) // a, b 在敏感列表中 begin sum = a ^ b; carry = a & b; end /* 以上五行可替换为: assign sum = a ^ b; assign carry = a & b; */ endmodule [ Last edited by sdlj8051 on 2006-11-1 at 10:25 ] |
» 猜你喜欢
基金委咋了?2026年的指南还没有出来?
已经有8人回复
拟解决的关键科学问题还要不要写
已经有4人回复
基金申报
已经有5人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
Materials Today Chemistry审稿周期
已经有5人回复
溴的反应液脱色
已经有7人回复
推荐一本书
已经有12人回复











回复此楼