| 查看: 280 | 回复: 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 ] |
» 猜你喜欢
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有7人回复
申请2026年博士
已经有5人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有5人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有6人回复
2025冷门绝学什么时候出结果
已经有7人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有6人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有7人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复













回复此楼