首页
友情链接
统计
关于我
更多
留言板
Search
1
多目标优化问题及两种常用解法
601 阅读
2
SNN & NoC仿真器收集
167 阅读
3
Windows常见问题记录
121 阅读
4
Leetcode刷题 - KMP算法
111 阅读
5
SNN映射论文阅读-SentryOS
95 阅读
未分类
论文笔记
linux
go学习
verilog
systemc
算法学习
latex
C++
Redis
登录
Search
标签搜索
redis
Lisheng Xie
累计撰写
31
篇文章
累计收到
6
条评论
首页
栏目
未分类
论文笔记
linux
go学习
verilog
systemc
算法学习
latex
C++
Redis
页面
友情链接
统计
关于我
留言板
搜索到
1
篇与
的结果
2023-02-02
SystemC学习
视频教程教程链接创建模块#include <systemc.h> // SC_MODULE声明模块,and2对应模块名 SC_MODULE(and2){ // sc_in声明输入端口,DT对应端口变量数据类型 sc_in<DT> a; sc_in<DT> b; // 声明时钟信号 sc_in<bool> clk; // sc_out声明输出端口 sc_out<DT> f; void func() { // 输入端口读数据.read() // 输出端口写数据.write() f.write(a.read() & b.read()); } // 模块构造函数 SC_CTOR(and2){ // 声明线程 SC_METHOD(func); // 线程声明后紧接着声明敏感信号列表,以 << 号隔开 // 声明a和b为敏感信号 sensitive << a << b; // 声明clk的上升沿为敏感信号,下降沿为.neg() // sensitive << clk.pos(); } } Threads A function made to act like a hardware process Run concurrently; Sensitive to signals, clock edges or fixed amounts of simulation time; Not called by the user, always active 支持三种threads SC_METHOD() Executes once every sensitive event Run continuously 类似于Verilog @always block 可综合 组合逻辑或者简单时序逻辑 SC_THREAD() 只在simulation开始时运行一次 可以使用无限循环来以固定频率执行代码段 类似于Verilog @initial block 不可综合 在testbench中用于初始化、描述时钟等 SC_CTHREAD() "clocked thread" Run continuously References a clock edge 可综合 Can take one or more clock cycles to execute a single iteration Datatypes SystemC has bit-accurate Integer Datatypes Unsigned and signed sc_uint<N> N是位宽 sc_int<N> SC_CTHREAD Clocked Threads SC_METHOD限制 Limited to one cycle Fine for counters or simple sequential designs Not much different than hand coded RTL Can't handle multi-cycle algorithms SC_CTHREAD Not limited to one cycle Can contain continuous loops Can contain large blocks of code with operations or control Great for behavioral synthesis SC_CTHREAD是SC_CTHREAD的一种特殊情况,SC_CTHREAD能产生更好的综合效果。SC_CTHREAD中可以使用wait()函数。 SC_CTHREAD中第二个参数需要传入时钟参数,(clk,pos()/clk.neg()) SC_CTHREAD(fir_main, clk.pos()); reset_signal_is(rst, true); Testbench Top level structural module sc_main() funciton定义程序主函数 sc_signal<> 用于定义信号线连接模块之间的端口 sc_clock 定义clock信号 sc_clk clk_sig; // 构造函数中传入时钟信号,这里SC_NS指ns,10表示10ns为一个时钟周期 SC_CTOR(SYSTEM):clk_sig("clk_sig", 10, SC_NS) sc_start()、sc_stop()开始和终止仿真 Handshaking valid/ready信号组 Latency// 记录时间 sc_time start_time, end_time, clk_period; start_time = sc_time_stamp(); // 获取时钟周期, clk是之前声明的时钟信号 sc_clock *clk_p = DCAST<sc_clock*>(clk.get_interface()); clock_period = clk_p -> period(); C++ Segmentation Faulthttps://zhuanlan.zhihu.com/p/397148839
2023年02月02日
83 阅读
0 评论
0 点赞