news 2026/3/13 0:56:16

iverilog 配合 Makefile 搭建 Verilog 仿真工程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
iverilog 配合 Makefile 搭建 Verilog 仿真工程

参考

ModelSim 配合 Makefile 搭建 Verilog 仿真工程

命令

Windows PowerShell 版权所有(C) Microsoft Corporation。保留所有权利。 安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows PS D:\test\ax301>iverilog-g2012-osim tb.sv clock_div.v PS D:\test\ax301>vvp sim VCD info: dumpfile clock_div.vcd openedforoutput.=====Start clk_div simulation(N=2)==========End clk_div simulation=====PS D:\workspace\gitee\0\ming-verilog_prj\ming-verilog\test\ax301>gtkwave clock_div.vcd GTKWave Analyzer v3.3.71(w)1999-2016 BSI[0]start time.[2000000]end time.

clock_div.v

`timescale 1ns / 1ps module clock_div#( parameter P_CLK_DIV_CNT = 2 //MAX = 65535 )( input i_clk , input i_rst_n , output o_clk_div ); reg ro_clk_div ; reg [15:0] r_cnt ; assign o_clk_div = ro_clk_div; localparam L_COMPARE_CNT = P_CLK_DIV_CNT/2 - 1; always @(posedge i_clk or negedge i_rst_n)begin if(!i_rst_n) r_cnt <= 'd0; else if(r_cnt == L_COMPARE_CNT) r_cnt <= 'd0; else r_cnt <= r_cnt + 1; end always @(posedge i_clk or negedge i_rst_n)begin if(!i_rst_n) ro_clk_div <= 'd0; else if(r_cnt == L_COMPARE_CNT) ro_clk_div <= ~ro_clk_div; else ro_clk_div <= ro_clk_div; end endmodule

tb.sv (生成vcd文件)

`timescale 1ns / 1ps module tb; // --------------------------------- // 参数:分频系数 // --------------------------------- parameter int P_CLK_DIV_CNT = 2; // --------------------------------- // 信号声明 // --------------------------------- reg i_clk; reg i_rstn; wire o_clk_div; // --------------------------------- // 实例化被测模块 // --------------------------------- clock_div #( .P_CLK_DIV_CNT(P_CLK_DIV_CNT) ) dut ( .i_clk (i_clk), .i_rst_n (i_rstn), .o_clk_div (o_clk_div) ); // --------------------------------- // 生成时钟:50MHz (20ns) // --------------------------------- initial i_clk = 1'b0; always #10 i_clk = ~i_clk; // --------------------------------- // 复位过程 // --------------------------------- initial begin i_rstn = 1'b0; #100; i_rstn = 1'b1; end // --------------------------------- // VCD 波形输出(关键) // --------------------------------- initial begin $dumpfile("clock_div.vcd"); // 生成的波形文件名 $dumpvars(0, tb); // dump 整个 tb 层级 end // --------------------------------- // 仿真时间控制 // --------------------------------- initial begin $display("===== Start clk_div simulation (N = %0d) =====", P_CLK_DIV_CNT); #2000; $display("===== End clk_div simulation ====="); $finish; end endmodule
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/8 21:15:24

Python数据缓存避坑指南(8个常见错误及性能修复策略)

第一章&#xff1a;Python数据缓存的核心价值与适用场景在现代应用开发中&#xff0c;性能优化是提升用户体验的关键环节。Python作为一门广泛应用于Web服务、数据分析和人工智能领域的语言&#xff0c;其对数据缓存机制的支持尤为重要。数据缓存通过将频繁访问或计算代价高的结…

作者头像 李华
网站建设 2026/3/12 20:25:27

【分布式爬虫架构设计】:基于Asyncio实现千万级请求的3步优化策略

第一章&#xff1a;分布式爬虫架构设计概述在大规模数据采集场景中&#xff0c;单一节点的爬虫系统往往难以应对高并发、反爬机制和任务调度等复杂需求。分布式爬虫通过将抓取任务分解到多个节点协同工作&#xff0c;显著提升了数据获取效率与系统稳定性。其核心在于合理划分职…

作者头像 李华
网站建设 2026/3/9 18:03:39

Python异步数据库性能调优(从入门到生产级部署)

第一章&#xff1a;Python异步数据库性能调优概述在构建高并发的现代Web应用时&#xff0c;数据库访问往往成为系统性能的瓶颈。传统的同步数据库操作在处理大量并发请求时容易阻塞事件循环&#xff0c;导致资源利用率低下。Python通过asyncio生态提供了异步编程能力&#xff0…

作者头像 李华
网站建设 2026/3/11 5:34:10

HTML表格展示训练指标:TensorFlow回调函数定制输出

HTML表格展示训练指标&#xff1a;TensorFlow回调函数定制输出 在深度学习项目的日常开发中&#xff0c;一个常被忽视却至关重要的环节是——如何让训练过程“看得见”。我们花大量时间调参、优化模型结构&#xff0c;但最终交付给团队或上级的往往只是一段终端日志截图&#x…

作者头像 李华
网站建设 2026/3/10 5:40:16

SSH KeepAlive保持TensorFlow长时间训练连接稳定

SSH KeepAlive 保持 TensorFlow 长时间训练连接稳定 在深度学习的实际开发中&#xff0c;你是否经历过这样的场景&#xff1a;凌晨两点&#xff0c;模型正在关键的第80个epoch收敛&#xff0c;突然终端“啪”地一声断开&#xff0c;再连上去发现训练进程已经终止&#xff1f;日…

作者头像 李华