zoukankan      html  css  js  c++  java
  • jchdl

     
     
    因为建模方式的不同,RTL值的传播不同于GSL值的传播。
     
    jchdl GSL模型的信息较多,知道Port的upstream Port和downstream Ports,也就是知道值的变化从哪里传过来,又要传到哪里去。所以GSL模型,使用推式传播(Push),即如果portA的值发生变化,则把变化事件推给portA的所有downstream ports。
     
    jchdl RTL为了模型简洁,只保留了Block依赖的事件的信息,而事件被依赖的Block的信息,只能检查事件是否发生,而不能在事件发生之后推送给依赖该事件的Block。所以RTL模型,使用拉式传播(Pull),即检查模块及模块的子模块中各个Block所依赖的事件是否发生,如果发生执行Block对应的逻辑块。
     
    值变化事件传播的步骤如下:
    1. 通过顶层模块,搜集顶层模块及其子模块中的所有Block所依赖的事件是否发生,保存被事件触发的Block;
    1. 执行被事件触发的Block的逻辑块;
    1. 返回1搜集是否还有新的事件发生,如果有则执行2,如果没有则传播结束;
     
     
    一. PropagateManager
     
     
    使用PropagateManager提供的方法,来完成值的传播。
    1. PropagateManager.propagate(): 该方法需要事先使用PropagateManager.add()方法把propagatables添加进来;
    1. PropagateManager.propagate(Module topModule): 直接检查topModule是否有值变化事件发生,并传播该事件,无需添加;
     
    二. 举例:Mux
     
     
    运行结果如下:
     
     
    需要注意的是,传播一定要有值的变化事件发生,如果没有,则值仍为默认值。
     
     
    三. Propagatable
     
    具有传播能力的元素。
     
     
    四. 事件
     
     
     
  • 相关阅读:
    搜狗图片抓取,主要以图集类进行抓取
    使用mongo进行去重操作
    爬虫实战01_淘宝模拟登录
    Linux常用命令02(远程管理)
    Linux常用命令01(文件和目录)
    Linux终端命令格式
    常用Linux命令的基本使用
    闭包与私有变量
    三栏布局的几种方法
    redux和react-redux小记
  • 原文地址:https://www.cnblogs.com/wjcdx/p/9626542.html
Copyright © 2011-2022 走看看