城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

SystemVerilogVerilog的testbench

6月2日 无镇楼投稿
  在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilogVerilog提供的文件写入读取方法并不多,主要有两类。
  第一类是writemembwritememhreadmembreadmemh,第二类是fscanffwrite。第一类用法简单,但是功能弱,文件读取也不支持多维数组;第二类用法复杂一点,功能相对强大,配合循环语句可以处理多维数组。1。writemem〔bh〕readmem〔bh〕
  writemem〔bh〕主要有以下用法:
  (1)readmemb(数据文件名,存储器名);
  (2)readmemb(数据文件名,存储器名,起始地址);
  (3)readmemb(数据文件名,存储器名,起始地址,终止地址);
  其中起始地址和终止地址都是相对于存储器名指定的数据而言,而不是指写入文件时的位置。参考以下代码。parameterWIDTH8;parameterINDEX016;parameterFILEPATHBE:FPGAPRACTICEFileReadWritefilesfileb。parameterFILEPATHHE:FPGAPRACTICEFileReadWritefilesfileh。parameterFILEPATHFE:FPGAPRACTICEFileReadWritefilesfilef。parameterFILEPATHHALFE:FPGAPRACTICEFileReadWritefilesfilehalf。reg〔WIDTH1:0〕dat0〔INDEX01:0〕,dat1〔INDEX01:0〕;wire〔WIDTH1:0〕dat1comp〔INDEX01:0〕;reg〔WIDTH1:0〕dat0read〔INDEX01:0〕;integeri,j;initialbeginfor(i0;iINDEX0;i)dat0〔i〕i1;writememb(FILEPATHB,dat0,0);writememh(FILEPATHH,dat0,0);writememh(FILEPATHHALF,dat0,INDEX02);readmemh(FILEPATHH,dat0read,INDEX02);for(i0;iINDEX0;i)display(d,dat0read〔i〕);end
  writememb(FILEPATHB,dat0,0)将以二进制的格式写入数据,如下图所示。每个数据占据一行。注意,使用writememb写入的文件也要通过readmemb读出,否则数据可能是错误的。
  writememb(FILEPATHB,dat0,0)将以二进制的格式写入数据。
  writememh(FILEPATHHALF,dat0,INDEX02)将从dat0〔8〕开始按照十六进制写入数据,如下图所示。
  readmemb和reamdmemh可以从文件中读取数据,其用法如下。
  (1)readmem〔bh〕(数据文件名,存储器名);
  (2)readmem〔bh〕(数据文件名,存储器名,起始地址);
  (3)readmem〔bh〕(数据文件名,存储器名,起始地址,终止地址);
  其中起始地址是指从数据文件中读取的数据将从存储器名的指定地址开始填充,参考上文程序中的以下语句。
  readmemh(FILEPATHH,dat0read,INDEX02);
  for(i0;iINDEX0;i)display(d,dat0read〔i〕);
  从FILEPATHH中读取的数据将从dat0read的地址INDEX02的位置开始填充,而dat0read中未初始化且未填充的数据为x,如下图所示。
  注意,readmem〔bh〕是将数据放在存储器中,所以dat0read应该定义为reg型,而不是wire。
  此外,readmem〔bh〕是不能填充二维数据的。比如reg〔M:N〕dat〔X:Y〕是可以使用readmem〔bh〕填充的,而reg〔M:N〕dat〔X:Y〕〔A:B〕是不可以用作readmem〔bh〕的操作对象的。2。fwrite和fscanf2。1基本用法
  这两个系统函数的功能更强大,参考以下代码。initialbeginfor(i0;iINDEX01;i)dat1〔i〕i1;dat1〔INDEX01〕b000x0001;fidfopen(FILEPATHF,w);for(i0;iINDEX02;i)beginfwrite(fid,dd,dat1〔i2〕,dat1〔i21〕);endfclose(fid);fidfopen(FILEPATHF,r);for(i0;iINDEX0;i)beginfscanf(fid,d,dat1comp〔i〕);display(Readdatais:b,Origindatais:b。,dat1comp〔i〕,dat1〔i〕);if(dat1comp〔i〕!dat1〔i〕)begindisplay(Datanotidentical!Indexd。,i);endendend
  上述代码首先对dat1进行赋值,注意dat1〔INDEX01〕被单独赋值,且其值包括x。通过fopen打开或新建一个可写的文本文件,将每两个连续的数据写入文件。如下图所示。
  通过fwrite(fid,dd,dat1〔i2〕,dat1〔i21〕)将dat1按照十进制的格式写入文件,每两个数据为一行。fwrite函数会自动换行,所以上述代码中的是多余的。后续代码通过fscanf将数据从文件中读出,可以每次读出一个数据,也可以每次读出多个数据。
  注意,写入文件格式和读出格式必须匹配,否则读出数据出错。比如按照十进制写入,就需要按照十进制读出。
  fscanf和c语言中的printf的使用方法基本一致。
  dat1〔INDEX01〕中的一个bit包含x,所以整个数据存储为x。2。2多维数据读写
  fwrite和fscanf可以支持多维数组读写。写入函数不再赘述,主要描述读出操作,参考以下代码。parameterINDEX14;parameterINDEX24;parameterFILEPATH2DBE:FPGAPRACTICEFileReadWritefilesfile2Db。parameterFILEPATH2DHE:FPGAPRACTICEFileReadWritefilesfile2Dh。reg〔WIDTH1:0〕dat2〔INDEX11:0〕〔INDEX21:0〕;wire〔WIDTH1:0〕dat2comp〔INDEX11:0〕〔INDEX21:0〕;initialbeginfor(i0;iINDEX1;i)beginfor(j0;jINDEX2;j)begindat2〔i〕〔j〕iINDEX1j;endendwritememb(FILEPATH2DB,dat2,0);writememh(FILEPATH2DH,dat2,0);readmemb(FILEPATH2DB,dat2comp);fidfopen(FILEPATH2DB,r);for(i0;iINDEX1;i)beginfor(j0;jINDEX2;j)beginfscanf(fid,b,dat2comp〔i〕〔j〕);display(data〔。2d〕〔。2d〕is:d,i,j,dat2comp〔i〕〔j〕);endendfclose(fid);fidfopen(FILEPATH2DH,r);for(i0;iINDEX1;i)beginfor(j0;jINDEX22;j)beginfscanf(fid,hh,dat2comp〔i〕〔j2〕,dat2comp〔i〕〔j21〕);display(data〔。2d〕〔。2d〕is:ddata〔。2d〕〔。2d〕is:d,i,j2,dat2comp〔i〕〔j2〕,i,j21,dat2comp〔i〕〔j21〕);endendend
  上述代码展示了如何通过for循环从文件中读出数据并填充多维数组的,可以一次读出一个数据,也可以读出多个,比如fscanf(fid,hh,dat2comp〔i〕〔j2〕,dat2comp〔i〕〔j21〕)。下一句将读出数据打印出来。注意文件数据类型要和读出类型一致。
  版权声明:本文为CSDN博主小苍蝇别闹的原创文章,遵循CC4。0BYSA版权协议,转载请附上原文出处链接及本声明。
  原文链接:https:blog。csdn。netyinyeyyarticledetails112499675
投诉 评论 转载

库克苹果的目标是不再消耗地球上的任何资源26日,苹果现任CEO库克在接受媒体采访时提到,苹果的长期目标是不用地球上的任何资源来制造产品。为此,现阶段类似Mac、iPhone等产品中部分的铝和稀土等都是回收再利用的,且……SystemVerilogVerilog的testbench在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilogVerilog提供的文件写入读取方法并不多,主要有两类。第……盘点4款3000元档国产手机,款款都是高性价比,网友坐等612022年以来,手机市场愈发激烈,手机厂商都纷纷发布新一代旗舰。但不少业内人士分析,在较为低迷的智能手机市场,3000元左右的中端市场韧性会更强、需求更旺。618即将到来,今天……当代散文新疆的秋天文杨建军有人说;秋天是一首歌、秋天是一幅画、秋天是一首诗可我觉得,秋天就是每个人心底个故事,人生的点滴成长都会在秋天收获。秋天是铺满大地的辣椒,红红火火,秋天是洁白如雪的……阿德勒自卑与超越8自卑情节三个孩子跟妈妈一起去动物园,看到关在笼子里的狮子后,孩子们有了不同的反应。第一个躲在妈妈后面,不断往后退缩,对妈妈说:我想回家,第二个脸色苍白,身体颤抖着说:我一点也不害怕,第……染发对头皮的伤害有多严重一般情况下可以染发但需要根据自己本身的情况。如果属于敏感体质建议少染,以免引起过敏的情况。头皮过敏可能会引起糜烂,流水。不是过敏体质也建议不要经常染发染发剂中会含有许多化……下周一,油价有变!下周一(10月10日)24时油价又要变了本轮油价预测要下降!9月美油累计下跌约11,布油累跌约8。8,均为连续第四个月下跌。三季度跌超20,而10月开市第一日……76人4换2新方案!哈里斯联手三球,恩比德哈登喜迎2大帮手北京时间9月2日,NBA自由市场最大牌米切尔交易尘埃落定,1换8加盟骑士,这也让东部的竞争变得更加激烈。而一些东部球队并未停下补强的步伐,这当中就包括76人,美媒NBAAnal……硒是长寿元素,建议中老年宁可不吃肉,也要吃这3种高硒菜大家好,我是桃子姐!健康长寿是每个人的梦想,即使再平凡的人,活着都会有他自身的价值,无论是社会价值,还是家庭价值,老话说的好死不如赖活着,也正是这个道理。想长寿必须得先学……信用卡新规定出台,这些消息你看明白了吗?近日,中国银保监会、中国人民银行发布《关于进一步促进信用卡业务规范健康发展的通知》。而这次的规定将会对信用卡用户带来怎样的影响呢?数据表明,随着信用卡业务的不断增长……石墨烯氮微谐振器中的栅极可调谐频梳光学频率梳以不连续的等间隔频率发射光脉冲,是现代频率计量学、精密光谱学、天文观测、超快光学和量子信息的基础。石墨烯由于具有出色的费米狄拉克可调性和超快的载流子迁移率,其光……价格大幅下调!苹果MacBookProM1直降1500元随着M2芯片机型的逐渐上市,苹果目前对部分M1芯片机型进行了价格调整。目前在京东商城自营上面,苹果MacBookProM1机型(8G256G)直降1500元,注重价格因素的用户……
热搜第一!涨,暴涨!还一票难求!张恒公开大量视频图文直指郑爽虐待儿女,网友都不是好人广东队三消息徐杰连续低迷,朱芳雨亮明态度,顶薪先生太拉垮一代矿王?英伟达RTX3090矿卡评测引领中国新能源出口浪潮,看上汽集团在海外市场谋划的一盘大旗30004000中最适合学生党的手机CBA第19轮排名广东反超辽宁,黑马重返前8,李楠带队狂跌1张家界元宇宙送福利看阿凡达2可免费游武陵源大规划乐清海洋生态公园整体结构具体设计公示了!快看拳头游戏发布技术说明!失去了公平和透明,英雄联盟还算电子竞技第一波阳康飞往三亚,游客翻了几番,旅行社老板坦言不建议退烧发烧友,依旧被打动,意力DB52无源音箱NADD3020
早秋提花针织开衫外套怎么搭配5款打造简约名媛范多品牌宣布与小S终止合作,小S干了什么?最经典的表白情话老人发生交通事故的原因爱的铭记巴黎的约定坐月子吃当归好吗西门秦氏女,秀色如琼花。意思翻译、赏析以温暖为话题的作文400字高考考试过程中想要上厕所怎么办饮酒造句用饮酒造句大全艾顿威廉森是为了给主场观众表演,我没情绪买保险哪个好(个人买什么保险最划算)

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁