UVM基础知识3:Systemverilog 验证 12.2.2实例

2023-11-14

来源:systemverilog验证 测试平台编写指南(书籍)

1 新建counter7.c文件

    vi counter7.c

#include<svdpi.h>
#include<malloc.h>
#include<veriuser.h>


typedef struct {
  unsigned char cnt;
} c7;


void* counter7_new() {
  c7* c = (c7*) malloc(sizeof(c7));
  c-> cnt = 0;
  return c;
}


void counter7(
            c7            *inst,
            svBitVecVal   *count,
    const   svBitVecVal   *i,
    const   svBit         reset,
    const   svBit         load){

  if (reset)      inst -> cnt = 0;
  else if (load)  inst -> cnt = *i;
  else            inst -> cnt++;
  inst -> cnt = inst -> cnt & 0x7f;
  *count = inst -> cnt;

  io_printf("C: count = %d, i= %d, reset = %d, load = %d\n",*count, *i, reset, load);
}


2 新建test.sv

vi test.sv

`timescale 1ns/1ps


import "DPI-C" function chandle counter7_new(); 
import "DPI-C" function void counter7 ( 
    input   chandle   inst,
    output  bit[6:0]  out,
    input   bit[6:0]  in,
    input   bit       reset,load);

import "DPI-C" function real sin(input real r); 

program automatic test;
  
initial begin 
  
  bit [6:0]   o1, o2, i1, i2;
  bit         reset,  load, clk1;
  chandle     inst1,  inst2;

  inst1 = counter7_new();
  inst2 = counter7_new();

  fork
      forever #10 clk1 = ~clk1;
      forever @(posedge clk1) begin 
          counter7(inst1, o1, i1, reset,  load);
          counter7(inst2, o2, i2, reset,  load);
      end 
  join_none

  reset = 0;
  load  = 0;
  i1    = 120;
  i2    = 10;

  @ (negedge clk1);
  load  = 1;

  @ (negedge clk1);
  load  = 0;

  #100 $finish;

end

endprogram

3 新建makefile

vi makefile 

run: vcs sim 

vcs:
	vcs -full64 -sverilog test.sv counter7.c

sim:
	./simv

clean:
	rm -f simv novas.conf *.log *.dump *.rc *.key test.fsdb
	rm -rf csrc/ simv.daidir/ verdiLog/


4 仿真

make run





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UVM基础知识3:Systemverilog 验证 12.2.2实例 的相关文章

  • C 中的字符串和指针

    include
  • 最小化 malloc() 调用量可以提高性能吗?

    考虑两个应用程序 一个 num 1 调用 malloc 多次 另一个 num 2 调用 malloc 几次 两个应用程序都分配same内存量 假设 100MB 对于哪个应用程序 下一个 malloc 调用会更快 1 还是 2 换句话说 ma
  • Verilog 中的大括号是什么意思?

    我很难理解 Verilog 中的以下语法 input 15 0 a 16 bit input output 31 0 result 32 bit output assign result 16 a 15 a 15 0 我知道assign语句
  • 我可以在不更改系统 DPI 设置的情况下设置 Java Swing 应用程序的 DPI 分辨率吗?

    我有一个使用 Substance LookAndFeel 并以 Windows 作为目标平台的 Java 应用程序 我想增加应用程序的 DPI 设置without更改系统设置 我想这样做是因为我不想强迫用户重新启动 Windows 而且许多
  • 函数插入仅适用于 malloc 而不是 free

    我在通过使用函数插入来监视 malloc 和 free 时遇到了一个小问题 当仅对 malloc 执行函数插入时 它按预期工作 然而 当尝试插入 free 时 它 最终会陷入循环 我似乎 free 被递归调用 但我只是不知道为什么 这是 m
  • glibc 已弃用的 __malloc_hook 功能的替代方案

    我正在为 C 编写一个内存分析器 并为此拦截对malloc realloc and free通过 malloc hooks 函数 不幸的是 这些已被弃用 因为它们在多线程环境中表现不佳 我找不到描述实现相同目标的替代最佳实践解决方案的文档
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • 是否可以用 C 语言编写 malloc 的一致实现?

    这是后续字符数组可以与任何数据类型一起使用吗 https stackoverflow com questions 38510557 我了解动态内存和 malloc 的常见实现 可以在以下位置找到参考资料维基百科 https en wikip
  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • malloc:***错误:已释放对象的校验和不正确 - 对象可能在释放后被修改

    我的 iOS 应用程序有一个大问题 它有时会崩溃 而没有详细的调试错误 堆栈跟踪为空 这是堆栈跟踪中仅有的两行 UIApplicationMain 中的 符号存根 UIHostedTextServiceSession DismissText
  • 像素到厘米?

    我只是想知道像素单位是否是不变的 以及我们是否可以从像素转换为厘米 如同这个问题 https stackoverflow com questions 139655 how to convert pixels to points px to
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • 修改二维数组的malloc策略,使malloc成功

    我们最近收到一份报告 称我们的应用程序偶尔会无法运行 我找到了问题代码 struct ARRAY2D long col int numRows 800000 int numCols 300 array ARRAY2D malloc numR
  • Swift - 如何使用 malloc?

    我正在尝试将 Objective C 应用程序转换为 Swift 但我不知道如何实现 malloc 可以在 Swift 中使用吗 谢谢 当您使用 Swift 中的 ObjC 或 C 时 您需要实现桥接标头 然后 桥接标头导出的函数可在 Sw
  • 检查图像是否为灰度的可靠方法

    我目前正在研究一个用例 我需要确定上传的图像是灰度还是 RGB 我找到了几种方法来识别这一点 但不确定它们是否可靠并且可以共同使用来确认图像是否为灰度 第 1 部分 使用 Raster 读取图像并获取 NumberDataElements
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • Realloc 和 sscanf 到一个函数中

    我有一个文件 里面有num行 每一行包含一个数字 我想将每个数字保存到一个向量中 vet 为什么这段代码不起作用 Segmentation fault core dumped 我认为错误是sscanf in save numbers功能 但
  • 基本 Malloc/免费

    如果我的程序有这样的片段 struct Node node while node malloc 100 do stuff with node 这意味着每次我循环 while 循环时 我都会新分配节点指针指向的 100 个字节 对吧 如果这是
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt

随机推荐