0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

借助GPT4理解仿真中竞争处理的方法

Spinal FPGA 来源:Spinal FPGA 2023-11-25 14:23 次阅读

上周微信群里的一个小伙伴提到的一个关于仿真中不达预期的一个问题,其中牵涉到关于仿真中信号竞争等问题。这个问题之前算是不求甚解。这周经一位大佬的提点,结合GPT4的帮助,来好好梳理下这个问题。

由于本人对底层不求甚解,仅做总结与梳理,真实细节还需扒代码底层,有感兴趣的可自行去探索。

不得不说科技改变生活,GPT确实强大。

不达预期的仿真行为

先来看一个简单的电路:

caseclass Test() extends Component {
val pc=outUInt(8bits) setAsReg() init(0)
val inst=inUInt(8bits)
pc:=pc+1
}

小伙儿的需求很简单。在仿真中根据当前的pc值加1后反馈给inst输入引脚。不假思索即可写出下面的仿真代码:

object TestApp extendsApp {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

看起来没啥毛病是吧,时钟上升沿之后将pc+1驱动给dut.inst。然而仿真结果却并不如人意:

71d71ece-8b49-11ee-939d-92fbcf53809c.jpg

按照正常的理解,这里面inst的值应该等于pc的值加1才行对吧,然而仿真波形却显示inst的值和pc的值一致。仿真器脑抽了?

在执行inst赋值前加上一行打印:

object TestApp extends App {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
println(s"time:${simTime()}	 pc:${dut.pc.toInt}	isnt_in:${dut.inst.toInt}	 clk:${dut.clockDomain.clockSim.toBoolean}")
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

仿真执行时打印信息如下:

time:170pc:0isnt_in:64clk:true
time:180pc:1isnt_in:1clk:true
time:190pc:2isnt_in:2clk:true
time:200pc:3isnt_in:3clk:true
time:210pc:4isnt_in:4clk:true
time:220pc:5isnt_in:5clk:true
time:230pc:6isnt_in:6clk:true
time:240pc:7isnt_in:7clk:true
time:250pc:8isnt_in:8clk:true

这就有点意思了,在170时刻,明明clk已经是高电平,按道理来时钟上升沿已然产生,然而pc打印出来的值仍然是0!

先说这里如何修复这个问题,你只需添加一个sleep(0):

object TestApp extends App {
SimConfig.withFstWave.compile(bootTest()).doSim{dut=>
dut.clockDomain.forkStimulus(10)
fork{
while(true){
dut.clockDomain.waitSampling()
sleep(0)
println(s"time:${simTime()}	 pc:${dut.pc.toInt}	isnt_in:${dut.inst.toInt}	 clk:${dut.clockDomain.clockSim.toBoolean}")
dut.inst#=dut.pc.toInt+1
}
}
dut.clockDomain.waitSampling(10)
}
}

如此,即可符合仿真预期:

71efa84a-8b49-11ee-939d-92fbcf53809c.jpg

Log打印:

time:170pc:1isnt_in:51clk:true
time:180pc:2isnt_in:2clk:true
time:190pc:3isnt_in:3clk:true
time:200pc:4isnt_in:4clk:true
time:210pc:5isnt_in:5clk:true
time:220pc:6isnt_in:6clk:true
time:230pc:7isnt_in:7clk:true
time:240pc:8isnt_in:8clk:true
time:250pc:9isnt_in:9clk:true

如果觉得能用即可,那么针对这种问题看到这里就可以了~






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 高电平
    +关注

    关注

    6

    文章

    102

    浏览量

    20957
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16912
  • GPT
    GPT
    +关注

    关注

    0

    文章

    302

    浏览量

    14869

原文标题:借助GPT4好好理解下仿真中竞争的处理

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    matlab仿真中IGBT的问题

    IGBT在matlab仿真中栅极怎么连接?为什么我画的IGBT的栅极和电源、PWM连接不上?
    发表于 11-15 13:26

    【工程源码】基于FPGA在Modelsim仿真中显示状态机名称的3种方法

    经过网上的搜索及自己的实验,总结在Modelsim仿真中显示状态机名称的三种方法。下面以一个具体的实例进行讲解。实例功能:引入状态机实现2分频,这里使用状态机完全只是为了说明如何在仿真中显示状态机
    发表于 02-21 16:48

    PROTEUS VSM在单片机系统仿真中的应用

    PROTEUS VSM在单片机系统仿真中的应用::介绍了单片机系统仿真工具PROTEUS VSM 及其在单片机系统仿真中的应用,给出了具体的应用实例,详细地介绍了PROTEUS VSM 与Keil uVision3的接口
    发表于 03-20 16:39 52次下载

    FRED在背光板仿真中的应用

    FRED在背光板仿真中的应用
    发表于 12-22 16:02 34次下载
    FRED在背光板<b class='flag-5'>仿真中</b>的应用

    saber仿真中的问题处理方法

    由于saber仿真要求较高,所以给新人造成了一些困扰,现在我们交流下一些常见错误的解决方法:1)设置元件属性时加了单位
    发表于 04-21 10:43 1.2w次阅读

    PSpice教程:PSpice仿真中收敛问题的研究

    PSpice教程:PSpice仿真中收敛问题的研究
    发表于 04-07 15:33 0次下载

    三菱PLC模拟仿真中文软件

    三菱PLC模拟仿真中文软件。
    发表于 01-14 16:46 58次下载

    MATLAB在供电系统仿真中的研究与应用_张惠萍

    MATLAB在供电系统仿真中的研究与应用_张惠萍
    发表于 03-19 11:27 2次下载

    SystemView在通信系统仿真中的应用研究

    SystemView在通信系统仿真中的应用研究(依工测试测量仪器)-该文档为SystemView在通信系统仿真中的应用研究讲解文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,,,,
    发表于 09-30 12:10 8次下载
    SystemView在通信系统<b class='flag-5'>仿真中</b>的应用研究

    浅谈ChatGPT的最新“升级版本”——GPT4模型

    浏览OpenAI发布的演示视频发现,GPT4的语言理解和生成能力均超过了ChatGPT,可以解答ChatGPT无法
    的头像 发表于 03-22 22:26 2601次阅读

    GPT4搞电机?

    GPT4可以搞电机吗?
    的头像 发表于 04-06 10:08 1201次阅读
    用<b class='flag-5'>GPT4</b>搞电机?

    GPT4做Leetcode的能力

    虽然一次周赛的几个题目说明不了太多问题,比如这个周赛的Hard题目就是板子题,算不上Hard,也许把第三题和第四题的顺序换一下比较合适。但是,GPT4的表现已经严重超出了我的预期。
    的头像 发表于 04-28 15:27 2042次阅读
    <b class='flag-5'>GPT4</b>做Leetcode的能力

    你考虑用GPT4搞电机吗?

    最近的GPT4有多火这里不需要赘述了。微软,苹果,baidu等各巨头纷纷跟进。这个赛道最近是各种资本涌入,犹如PC互联网转型到移动互联网时的爆发。
    发表于 07-05 09:16 228次阅读
    你考虑用<b class='flag-5'>GPT4</b>搞电机吗?

    chatGPT和GPT4有什么区别

    chatGPT和GPT4有什么区别 GPT(Generative Pre-trained Transformer)系列模型由OpenAI公司开发,是一组用于自然语言处理(NLP)任务的人工智能模型
    的头像 发表于 08-09 15:18 1802次阅读

    ChatGPT Plus怎么支付 GPT4得订阅吗?

    自去年年底 OpenAI 转型发布 ChatGPT 以来,生成式 AI 成为许多硅谷投资者关注的焦点。该聊天机器人使用从互联网和其他地方抓取的大量数据来对人类提示产生预测响应。GPT-4 的许多方面
    的头像 发表于 10-10 12:16 1394次阅读
    ChatGPT Plus怎么支付 <b class='flag-5'>GPT4</b>得订阅吗?