【效率提升-Perl脚本】根据Verilog文件自动生成tb文件

这篇具有很好参考价值的文章主要介绍了【效率提升-Perl脚本】根据Verilog文件自动生成tb文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在数字IC设计过程中,根据顶层生成testbench时存在很多重复性工作,因此为了提高工作效率,特地开发此脚本。
相应的python脚本见链接: 【效率提升—Python脚本】根据Verilog文件自动生成tb文件

Verilog端口文件(仅做示范用)

【效率提升-Perl脚本】根据Verilog文件自动生成tb文件,效率提升,perl,fpga开发,开发语言

对应的tb文件

【效率提升-Perl脚本】根据Verilog文件自动生成tb文件,效率提升,perl,fpga开发,开发语言

相应代码

use strict;
open R_FILE,"w_ctl.v" or die "can't open file:$!";
open W_FILE,"> tb.v" or die "can't touch tb file:$!";
my @in;
my @in_reg;
my @ou;
my @ou_wire;
my @par;
my $mo;
while(<R_FILE>){
    if(/module\s+(\w+)/){
         $mo=$1;
    }elsif(/(parameter\s+\w+\s?=\s?\d+)/){
        push(@par,$1);
    }elsif(/input\s+(\[\S+:\d+\])?\s+(\w+)/){
        push(@in_reg,$1);
        push(@in,$2);
    }elsif(/output\s+\S*?(\[\S+:\d+\])?\s+(\w+)/){
        push(@ou_wire,$1);
        push(@ou,$2);
    }else{
        next;
    }
}
print W_FILE "`timescale 1ns/1ps\n";
print W_FILE "module tb_$mo();\n\n";
foreach(@par){
    print W_FILE "$_\n";
}
print W_FILE "\n";
foreach(0..$#in_reg){
    print W_FILE "reg\t\t$in_reg[$_]\t$in[$_];\n";
}
foreach(0..$#ou_wire){
    print W_FILE "wire\t\t$ou_wire[$_]\t$ou[$_];\n";
}
print W_FILE "\n";
print W_FILE "initial begin\n";
foreach(@in){
    print W_FILE "\t$_='d0;\n";
}
foreach(@in){
    if(/rst_n/){
        print W_FILE "\t#100\t$_=1'b1;\n";
    }else{
        next;
    }
}
print W_FILE "end\n\n";
foreach(@in){
    if(/clk$/){  
        print W_FILE "always #2.5 $_=~$_;\n";
    }else{
        next;
    }
}
print W_FILE "//this is auto-inst\n";
print W_FILE "$mo\tU_$mo(\n";
print W_FILE "\t//input signal\n";
foreach(@in){
    print W_FILE "\t.$_($_),\n";
}
print W_FILE "\t//output signal\n";
foreach(0..$#ou-1){
    print W_FILE "\t.$ou[$_]($ou[$_]),\n";
    
}
print W_FILE "\t.$ou[-1]($ou[-1]));\n\n";
print W_FILE "endmodule";
close R_FILE;
close W_FILE;

学习更多IC知识,请关注
文章来源地址https://www.toymoban.com/news/detail-639719.html

到了这里,关于【效率提升-Perl脚本】根据Verilog文件自动生成tb文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TypeScript 中的 .d.ts 文件:加强类型支持,提升开发效率

    1.引言 什么是 .d.ts 文件 当我们使用 TypeScript 开发时,类型声明是非常重要的。它们提供了代码的静态类型检查和智能提示,以增强代码的可读性、可维护性和可靠性。然而,对于已有的 JavaScript 库或自定义模块,它们可能不包含类型声明信息。这就导致在使用这些库或模块

    2024年02月15日
    浏览(48)
  • 提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件

    法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼,以及仲裁案件,精确的法律文书撰写对于案件的成功至关重要。然而,这一过程往往既耗时又复杂,尤其是在处理复杂的案情和面对当事人难以理解的法言法语时。幸运的是,随

    2024年04月16日
    浏览(28)
  • 【python脚本】python实现:目标检测裁剪图片样本,根据类标签文件进行裁剪保存

    我在进行目标检测时候,比如红绿灯检测,目标区域很小,样本杂乱。 想要筛选错误样本的话,很困难。可以把目标区域裁剪出来。人大脑处理对于这样的异己比较敏感。样本量较少的话可以自己筛一筛。样本量较大的话,可以训练一个分类模型帮你筛一下。 它就可以实现

    2024年02月15日
    浏览(41)
  • 源生成器:根据需要自动生成机械重复代码

    本文概述了利用.NET Compiler Platform(“Roslyn”)SDK 附带的 源生成器 (Source Generator)自动生成机械重复的代码。关于这部分的基础入门知识可以在MSDN [1] 学到。 本文 默认 已经有一个解决方案,包含两个项目。一个是普通C#项目,依赖于另一个源生成器项目。 此处以 Dependenc

    2024年02月01日
    浏览(73)
  • 使用AI自动生成PPT提高制作效率

    在制作PPT方面,很多制作者都会轻易跳进一个怪圈:“我要制作一个关于关爱老人的PPT,该怎么做呢,有模板没有?”这个会涉及很多逻辑需要经过不断的思考,制作PPT要通过很多素材、使用技巧、方法经验的不断积累,然而在短时间内制作高质量的PPT这对初学者来说是件非常

    2024年01月17日
    浏览(55)
  • Hibernate根据实体类自动生成表的方法

    这种方法需要配置 hibernate.cfg.xml 的属性 hibernate.hbm2ddl.auto ,该属性值的具体说明如下: 值 说明 update 实体对应的表如果不存在则会创建。如果实体中新增加了字段,会在相应的表中增加一列 create 每次启动 Hibernate 都会创建表。在 Hiberante 启动时,会先删除实体对应的表,然

    2023年04月24日
    浏览(45)
  • idea2023根据表自动生成+springboot跑起来

    idea安装插件 idea中显示数据库连接 就可以看到如下界面 选中你想生成的表,右键如下操作 如上就有了所有需要的后端代码 生成后,要查看一下mapper.xml中的文件是否 正确, 若有误请先去修改,例如我的版本下生成了xml文件中缺乏逗号 4. 如上写好后想跑起来,配置pom,xml 配置

    2024年02月07日
    浏览(43)
  • AICG,人工智能自动生成内容——根据文本生成图像,视频,音频

    1、什么是AICG? 什么是AICG? AICG是指人工智能自动生成内容。 通过算法模型,将文本转化为图像、音频、视频等多种形式。 在数字时代,AICG已经成为各种领域中不可或缺的一部分。 AICG的应用场景 AICG在数字营销、广告制作、电影制作等领域广泛应用。 可以用于教育、娱乐

    2024年02月14日
    浏览(45)
  • GO项目自动化-根据库表字段自动生成API

    一个项目开发离不开数据库的增删改查,API功能也基本围绕着表的CRUD:增加(Create)、读取(Read)、更新(Update)和删除(Delete)。每个表写一个CRUD,方法都差不多,逻辑也非常相似。 那么有没有可能根据表结构直接自动化生成各个表的CRUD呢? 当然可以,前几篇文章已经介绍了gola

    2024年01月15日
    浏览(42)
  • 前端之vue 根据菜单自动生成路由(动态配置前端路由)

    在需要权限控制的页面,往往存在根据用户来显示菜单的情况,单独根据用户类型判断显然不是很好,如果后面用户类型发生变化,项目修改维护可能就会比较麻烦,所以比较好的做法是根据后端返回的菜单动态生成页面路由,以达到完全权限控制的目的,并且若权限发生变

    2024年04月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包