
IVerilog
文章平均质量分 71
baijiwei
做好产品, 写好代码
展开
-
Iverilog源码分析 --- data type
在Verilog里面, 有2种类型的变量: net和variable, 每一种都有多种的数据类型, 这些都是通过vpiSignal.cc里面原创 2022-01-29 17:11:54 · 1350 阅读 · 0 评论 -
Iverilog源码分析 -- vvp value change 类型
vvp_vecor4_t里面所有的value均为a/b bus代表01xz字符串;vvp_vector2_t采用unsigned long arr来进行存储;代表一系列的01字符串;vvp_scalar_tThe strength values are as defined here:HiZ - 0Small - 1Medium - 2Weak - 3Large - 4Pull - 5Strong - 6Supply – 7该class, 用一个byte记原创 2021-03-21 09:04:32 · 648 阅读 · 1 评论 -
Iverilog源码分析 -- VPI scope的实现
在Verilog里面采用module/endmodule 来组成整个design的hierarchy结构, 比如, 如下的代码:会产生如下的hierarchy结构:目前在Verilog的LRM, 有如下几种scope类型:ModuleTaskFuncionNamed block在IVerilog 里面, 定义了如下6中scope以及相关的定义如下:vpiModulevpiTaskvpiFunction上述3中, 比较常见, 忽略例子;vpiNamedBegin原创 2021-02-28 10:54:23 · 996 阅读 · 0 评论 -
Iverilog 源码分析 -- VPI的实现
在IVerilog中VVP可以通过-m或者-M制定需要加载的模块,本文介绍一下VPI的模块工作机制。每个模块通过vpip_load_module来加载指定的动态链接库, 然后在动态链接库里面找到“vpip_set_callback”函数来设定vpip_routines_s 结构内的函数指针,这些函数是VerilogLRM预定义的37个函数;然后查找vlog_startup_routines 内指定的启动函数并且逐个执行;void vpip_load_module(const char*name) {原创 2021-02-17 07:36:59 · 1552 阅读 · 1 评论 -
IVerilog 源码分析 --PLI框架简介
PLI 基础Verilog 提供了PLI(Programming Language Interface)机制, 用来进行硬件设计和软件设计者进行交互。 它可以在Verilog的设计之中加入用户自定义的系统函数,这些系统函数是通过C语言软件的方式实现, 这可以理解为, 通过插件的方式, 来扩充硬件设计语言的功能。PLI常见的功能如下:C语言bus函数建模;访问C语言代码库函数;延时计算功能;自定义输出显示;联合仿真;设计的debug功能;仿真结果分析;我们比较感兴趣的是访问C语言代码库原创 2021-02-15 19:35:40 · 1359 阅读 · 0 评论 -
Iverilog 源码分析 -- VCD的实现机制
VCD是Verilog LRM中定义的, 本文介绍VCD的实现过程。原创 2021-02-17 08:26:04 · 1281 阅读 · 0 评论