systemc语言
1. 有没有什么软件能够将systemc综合为verilog代码
第一,verilog是HDL语言,写出来的东西,也是需要综合才能上片子的。所以不叫systemc综合成verilog,只能叫转换。
第二,你如果是做综合的话,wait这种延时的东西,就算是verilog也是不支持的。
2. 使用vs2017如何进行systemc 编程
一、编译System库
下载SystemC library source code
下载SystemC library,目前的版本是systemc 2.3.1
以SystemC 2.3.1为例,下载后的文件名喂systemc-2.3.1.tgz,解压到工作目录下:...(个人的工作目录路径)systemcsystemc-2.3.1
打开....systemcsystemc-2.3.1msvc80SystemC目录下的SystemC.sln
systemC的软件开发环境篇
VS2012 "生成(Build英文)"-->“生成解决方案(Build Solution)”,生成SystemC.lib文件。
systemC的软件开发环境篇
如果编译成功的话(忽略那些Warning)。
在..systemcsystemc-2.3.1msvc80SystemCdebug目录下就生成了SystemC.lib
PS:编译systemc-2.3.0会遇到以下问题:
systemC的软件开发环境篇
VS2012在编译时会遇到这样的问题:fatal error C1189: #error : The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro.导致生成库不成功,
解决方案是:工程项目SystemC处右键Properties -> configuration Properties ->C/C++ -> Preprocessor -> Preprocessor Definitions 添加_XKEYCHECK_H。
systemC的软件开发环境篇
systemC的软件开发环境篇
然后就可以编译通过了
二、新建SystemC工程,并配置项目属性
有了编译的SystemC.lib库,我们就可以在vs2012配置我们的systemc工程属性了
新建项目,win32控制台应用程序,控制台应用程序设置时选择“空项目”。
添加.cpp源文件与.h头文件。
以下是一个简单地hello systemC的程序 功能是打印三行语句
Hello,SystemC!
by Eagleson
by Eagleson2016-01-12
源代码如下
//main.c
#include
#include "hello.h"
int sc_main(int, char**){
hello h("hello");
system("pause");
return 0;
}
//hello.h
#ifndef _HELLO_H
#define _HELLO_H
#include "systemc.h"
#include
#include
using namespace std;
void print1(string & name){
name = name + "2016-01-12";
cout<
}
SC_MODULE(hello)
{
SC_CTOR(hello)
{
cout<<"Hello,SystemC!"<
string str;
str="by Eagleson";
cout<
print1(str);
}
};
#endif
添加源文件后进行项目属性设置。
C/C++→常规→附加包含目录 (..systemc-2.3.1src)
systemC的软件开发环境篇
C/C++ →语言→启用运行时类型信息→是
systemC的软件开发环境篇
C/C++→代码生成→运行库→多线程调试(/MTd)
systemC的软件开发环境篇
C/C++→ 命令行→其它选项 加上/vmg
systemC的软件开发环境篇
Linker →常规→附加目录库 (..systemc-2.3.1msvc80SystemCDebug)
systemC的软件开发环境篇
Linker →输入→附加依赖库(SystemC.lib)
systemC的软件开发环境篇
C/C++→所有选项→警告等级 等级1(/W1)
systemC的软件开发环境篇
上述属性设置在每次建立SystemC工程时都需要设置。若想免去每次都设置的麻烦可通过以下方法。
View-->Property Manager 在左侧会有属性窗口打开。展开树形找到“Microsoft.Cpp.Win32.user”,双击之后就可以设置所有项目的属性了。
systemC的软件开发环境篇
三、编译、调试程序
systemC的软件开发环境篇
与我们预期的结果是一致的。
SystemC基于VS2012的软件平台搭建到这里就完成了。有了这个平台环境,后面的语法学习和练习就不只是纸上谈兵了。
3. systemverilog 和systemc,e语言比较,有哪些优缺点
现在出了很多HDL语言,systemC,systemverilog,不知道verilog是否会在几年后变得过时或者淘汰了,到时候就杯具了,还得重新转战其他语言。
4. 与计算机硬件有关的程序设计语言有哪些各有什么特点
你指的是硬件描述语言吧?
像VHDL、Verilog、SystemC这种。
具体特点本人还真不是很清楚,没有全部用过。
只知道VHDL相对更面向硬件一点,SystemC这种更接近高级语言。
5. 如何用modelsim编译systemC的设计
SystemC作为一种系统级设计与验证语言,非常适合做复杂IC的验证,而不是用于RTL描述。很多人问我如何将SystemC综合和编译为可以下载的CPLD/FPGA的比特文件或者综合为ASIC网表,我的回答是用SystemC做RTL设计还为时过早。可以想象将来可能将SystemC的行为级的描述综合为网表,即所谓高层次综合,这是一个很美好的未来,但未来不是现在。
Verilog/SystemVerilog依然是最好的RTL设计语言。未来的RTL设计属于SystemVerilog。关于SystemC和SystemVerilog在设计中的地位问题,我认为在验证方面,SystemC有明显的优势。如果你设计纯粹的ASIC,那么用SystemVerilog可能就足够了。但是在很多场合,软硬件同时存在,SystemC的代码很多部分可以之间用于设计软件,这个是很明显的优势。大家同时也可以看到,现在在ModelSim等仿真软件中,SystemC使用起来跟Verilog/VHDL一样,非常方便。举一个例子,我们假如想做DVB-S2的LDPC,我们一定会先用C++(M atlab也可以)写仿真程序,验证算法的正确性。然后假设我们已经确定了目标ASIC的架构,打算用Verilog做RTL设计。现在既然C++代码的验证部分可以几乎不加改变的用于基于SystemC的验证模块的设计,我们为什么还要费力的用SystemVerilog重新写一遍验证代码呢?
下面步入正题,讲一讲如何在ModelSim下编译和仿真SystemC的设计。我们设计一个一位移位寄存器模块(Verilog代码): 1.shifter.v
`timescale 1ns/100ps
mole shifter(clk,nrst,din,dout); input clk,nrst; input din;
output reg dout;
always (posedge clk or negedge nrst) begin:shifter_with_nreset if(~nrst) dout<=1'b0; else dout<=din; end
endmole
顶层设计为验证模块加shifter模块的例化: 2.tb.v
`timescale 1ns/100ps mole tb;
wire clk,nrst,data,data_fd_bk; shifter_test
tester(.clk(clk),.nrst(nrst),.data(data),.data_fd_bk(data_fd_bk)); shifter uut(.clk(clk),.nrst(nrst),.din(data),.dout(data_fd_bk)); endmole
其中shifter_test用SystemC描述。这个例子实际上不能显示SystemC的好处。 下面是SystemC的代码: 3.Shifter_test.h
#ifndef __shifter_test_h #define __shifter_test_h
#include #include
SC_MODULE(shifter_test) {
public:
// Mole ports
sc_out clk,nrst; sc_out data;
sc_in data_fd_bk; bool data_reg; bool err;
sc_clock internal_clk;
void st_behaviour() {
nrst=0; data=0;
wait(5); data=1; wait(2); nrst=1; wait(2); while(1) {
data=0; wait(2); data=1; wait(3); data=0; wait(4);
if(err) printf("Test failed"); else printf("Test passed\n"); } }
void gen_clk(){clk=internal_clk.read();} void disp_data(){
printf("nrst=%d,data input=%d,data
output=%d\n",nrst.read(),data_reg,data_fd_bk.read());
if((nrst.read()==1) && (data_reg!=data.read())) {
err=1;
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
assert(false); }
data_reg=data.read(); }
SC_CTOR(shifter_test)
:clk("clk"),nrst("nrst"),data("data"),data_fd_bk("data_fd_bk"),internal_clk("internal_clk",1000,0.5,SC_NS) {
SC_METHOD(gen_clk);
sensitive<<INTERNAL_CLK; dont_initialize();
SC_CTHREAD(st_behaviour, clk.pos());
SC_METHOD(disp_data); sensitive<<CLK.NEG();
err=0; } }; #endif
4.shifter_test.cpp
#include "shift_test.h" SC_MODULE_EXPORT(shifter_test);
只有两行代码。注意这里SC_MODULE_EXPORT的作用是将systemc的模块对其它语言可见。将以上4个文件加入到ModelSim的Project中,之后输入编译命令如下: sccom –g *.cpp sccom –link vlog *.v vsim tb 之后就可以根据需要看一些信号的仿真波形了。这里只有 sccom –g *.cpp sccom –link 与
SystemC有关。 在ModelSim中选择Compile all之后,再执行sccom –link,其效果等价于sccom –g *.cpp;vlog *.v;sccom –link。
6. systemverilog 和systemc,e,evra语言比较,有哪些优缺点
VERb.、Jeda、e语言。从方法学上他们都在朝层次化...systemverilog》。验证方法学本身并不局限于语言。...用SystemC来实现VMM,把系统建模和验证平台更完美的
7. systemc是一种系统级的建模语言,其特性有
现已证明,C语言设计不仅生产效率高,而且也是对Verilog流程的补充。SystemVerilog/SystemC的整合,使软件团队可以在与高效的硬件设计和验证过程开展合作的时候,用自有的编程语言进行工作,使整个方法途径在适宜的生产水平下进行。
工具和IP供应商正在为System Verilog提供支持。IP提供商已认识到统一化所带来的益处,特别是在验证领域,语言的统一使他们不必考虑当前支持多种语言的需求。
Accellera已推出SystemVerilog 3.0,并计划2003年中期推出 3.1版。凭借在标准背后的能力水平和可以解决重大设计问题的潜力,这一产品必能在业内取得成功。
8. VHDL,verilog,system verilog,systemC,impluseC,哪个更好
做逻辑开发的话,vhdl或者verilog都可以,没什么问题
如果做逻辑评测或者ic验证的话,system verilog比较专业
9. SystemC与Verilog的比较
System C是一种软/硬件协同设计语言,一种新的系统级建模语言。
研究表明,具有较高的抽象能力,同时能体现出硬件设计中的信号同步、时间延迟、状态转换等物理信息的语言,才能给工程师提供一个系统级设计的公共基础平台。在我们常用的设计语言中,C、C++ 和Java等高级编程语言有较高的抽象能力,但由于不能体现硬件设计的物理特性,硬件模块部分需重新用硬件描述语言设计,使得后续设计缺乏连贯性;而VHDL,Verilog最初目的并不是进行电路设计,前者是用来描述电路的,而后者起源于板级系统仿真,因此它们并不适合进行系统级的软件和算法设计,特别是现在系统中的功能越来越多的由软件来完成时。
SystemC既是系统级语言,也是硬件描述语言。《SystemC入门》介绍的是SystemC2.0标准,主要介绍SystemC有关硬件建模方面的语法特性,换言之,是介绍SystemC的RTI.可综合子集。其主要内存包括:SystemC数据类型、组合逻辑建模,同步逻辑建模、三态驱动器建模、常用的设计函数模型,测试平台的编写及系统级建模的功能等。随书附带l张光盘,内含《SystemC入门》所有例子的代码。《SystemC入门》所有例子都经SystemC2.0.1的验证。《SystemC入门》可作为想要了解和学习SystemC的设计工程师和系统工程师的参考书,也可用做大学讲授体系结构、数字设计或系统设计课程的教材。
你可以看看《systemc入门》这本书,很好的,介绍非常详细,而且里面有不少的图表介绍设计的流程。 其实最大的区别是SystemC对于系统架构的探索具有很有作用,但真正的RTL级电路设计,还是以VerilogHDL和VHDL为主的。
10. 从验证的角度,systemverilog和systemc谁更合适
systemverilog和systemc谁更合适
System C是一种软/硬件协同设计语言,一种新的系统级建模语言。
研究表明,具有较高的抽象能力,同时能体现出硬件设计中的信号同步、时间延迟、状态转换等物理信息的语言,才能给工程师提供一个系统级设计的公共基础平台。在我们常用的设计语言中,C、C++ 和Java等高级编程语言有较高的抽象能力,但由于不能体现硬件设计的物理特性,硬件模块部分需重新用硬件描述语言设计,使得后续设计缺乏连贯性;而VHDL,Verilog最初目的并不是进行电路设计,前者是用来描述电路的,而后者起源于板级系统仿真,因此它们并不适合进行系统级的软件和算法设计,特别是现在系统中的功能越来越多的由软件来完成时。
SystemC既是系统级语言,也是硬件描述语言。《SystemC入门》介绍的是SystemC2.0标准,主要介绍SystemC有关硬件建模方面的语法特性,换言之,是介绍SystemC的RTI.可综合子集。其主要内存包括:SystemC数据类型、组合逻辑建模,同步逻辑建模、三态驱动器建模、常用的设计函数模型,测试平台的编写及系统级建模的功能等。随书附带l张光盘,内含《SystemC入门》所有例子的代码。《SystemC入门》所有例子都经SystemC2.0.1的验证。《SystemC入门》可作为想要了解和学习SystemC的设计工程师和系统工程师的参考书,也可用做大学讲授体系结构、数字设计或系统设计课程的教材。
你可以看看《systemc入门》这本书,很好的,介绍非常详细,而且里面有不少的图表介绍设计的流程。 其实最大的区别是SystemC对于系统架构的探索具有很有作用,但真正的RTL级电路设计,还是以VerilogHDL和VHDL为主的。