jchdl:Jianchang Constructed Hardware Description Library,使用Java语言开发的硬件描述库。(Java是商标不让用,那就用名字 :-)
 
一. 设计目标
 
1.设计目标
 
打通IC开发和Java生态,以Java生态的赋能IC开发。
 
2. 当前路径
 
当前的路径是基于Java语言,建立硬件建模库(library)。使用jchdl建立硬件模型之后,可以直接进行功能验证。然后转换为Verilog语言,使用现有的工具集对转换后的模型进行验证、仿真等。
 
 
3. 现实
 
现实是,目前只实现了很小一部分功能。请视该项目为抛砖引玉,希望借助社区的力量(IC专业领域和Java开发领域的专家)来完善。
 
4. LICENSE
 
该项目使用较为宽松的BSD 3-Clause License。 希望能够成为一块好砖。
 
 
二. 基于Java
 
  1. Java语言
 
a. Java语言是流行的面向对象编程语言(OOP)。
b. Java语言是跨平台的语言,基于Java语言的代码可以一次编译、到处运行。
c. Java语言是编程语言从近代走向现代的象征。
 
  1. Java生态
 
Java不只是Java语言,而是Java生态:
  1. 先进的并不断演进的编程理念。各种设计模式、架构,基于Java衍生出来。
  1. 开放的Java社区。基于Java的开源项目众多、层出不穷。Java社区奉行开放的文化,源源不断的产生各种开放的资源。相较之下,IC生态则由于较高的专业门槛,而在很大意义上是封闭的。
  1. 强大的工具支持。开发环境有Eclipse/Netbeans/Intellij IDEA等强大的工具,相较之下Verilog使用的vim和EDA编辑工具犹如处在石器时代。其他如UML建模工具可以实现建模之后直接转化为Java代码,代码结构可视化工具可以直接分析Java代码生成结构图等。
  1. 品类繁多且仍在不断增加的各种库:每一种库即是对一个方面的赋能。
  1. 先进的Java虚拟机(JVM):JVM已经成为很多想要实现跨平台的语言的首选后端。很多新生的语言都是基于JVM设计,代码最终生成与Java一样的字节码(class)文件,供Java虚拟机解释运行。
 
 
 
三. 当前实现
 
由于时间和能力限制,目前仅实现了如下功能:
  1. 门和开关层(GSL)建模模型,可以基于建模方法论(Methodology)进行建模(model a hardware model);
  1. 门和开关层(GSL)模型验证,可以直接运行查看运行结果进行验证;
  1. GSL模型转化为Verilog语言;
  1. RTL层建模模型,与Verilog很贴近;
  1. RTL层模型验证,可以直接运行查看运行结果进行验证;
  1. RTL层模型转化为Verilog语言;
 
二. 辅助建模
 
当前实现的功能有限,没有建模等后续阶段的支持,所以当前只能进行辅助建模。
 
三. 模型验证
 
验证原理:
  1. GSL模型验证,基于值的传播。值的变化在线和节点上进行传播,如果值没有变化则不会进行传播(可以避免拓扑中的环导致的死循环)。
  1. RTL模型验证,基于事件驱动模型,参考Verilog event schedule机制。当有wire或reg的值变化,而又有依赖这个reg和wire的逻辑时,则执行这段逻辑。逻辑的执行又导致新的事件产生。在一个time slot中,一直执行,直到没有新的事件产生为止。
 
验证方法:
  1. 使用Intellj IDEA等IDE提供的断点功能,在执行时停下来观察变量的值。也可以单步执行、步入、步出等功能跟踪代码执行流程。
  1. 使用Junit库进行单元测试。
  1. 使用log机制,记录执行过程中的log,执行完成之后再行分析。
 

数字电路建模 - jchdl的更多相关文章

  1. HDL-数字电路建模的要点

    https://mp.weixin.qq.com/s/tEDMWf1gk0e7u4hIWKM9bQ   ​​   一. 拓扑   数字电路的拓扑抽象出来之后比较简单,就是线(Wire)和开关(Swit ...

  2. jchdl - RTL

    https://mp.weixin.qq.com/s/gNN2eiJnr9N02xdZVQceDQ   ​​   相较于GSL层对物理连接的建模,RTL层提高了一个抽象层次: 把物理的触发器提取为抽象 ...

  3. jchdl - GSL Node

    https://mp.weixin.qq.com/s/Oa4qgjIUccu5Y-Jlqcyn_A   org.jchdl.model.gsl.core.meta.Node.java   ​​ gen ...

  4. jchdl进展 - 20180918

    这几天看了下SystemC,发现与jchdl相似的地方,或者jchdl与之相似的地方. 但总体而言: 1. jchdl的模型更简单,更清晰: 2. jchdl还有一些建模需要的工具需要补充,比如: i ...

  5. jchdl - RTL Value Propagation

    https://mp.weixin.qq.com/s/2_0yQYdHlSQzPw7vX7NuHA     ​​ 因为建模方式的不同,RTL值的传播不同于GSL值的传播.   jchdl GSL模型的 ...

  6. 从零开始编写自己的C#框架(28)——建模、架构与框架

    文章写到这里,我一直在犹豫是继续写针对中小型框架的设计还是写些框架设计上的进阶方面的内容?对于中小型系统来说,只要将前面的内容进行一下细化,写上二三十章具体开发上的细节,来说明这个通用框架怎么开发的就 ...

  7. DDD 领域驱动设计-商品建模之路

    最近在做电商业务中,有关商品业务改版的一些东西,后端的架构设计采用现在很流行的微服务,有关微服务的简单概念: 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独 ...

  8. PowerDesigner(数据建模)使用大全

    什么是PowerDesigner 引入百度百科的说法是: power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具.使用它可以分别从概念数据模型(Conceptu ...

  9. 数百个 HTML5 例子学习 HT 图形组件 – 3D建模篇

    http://www.hightopo.com/demo/pipeline/index.html <数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇>里提到 HT 很 ...

随机推荐

  1. 低价购买(LIS方案统计)

    题意:https://www.luogu.com.cn/problem/P1108 如果两个数列组成的数字完全相同,那我们说这两个数列相同. 求出最长下降子序列的方案数. 题解来自 wjyyy大神. ...

  2. 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类

    日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 ​ Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...

  3. 前端自适应样式reset.css

    @charset "utf-8"; /* CSS Document */ html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4 ...

  4. node常用插件使用

    1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...

  5. Istio的流量管理(概念)(istio 系列二)

    Istio的流量管理(概念) 目录 Istio的流量管理(概念) 概述 Virtual services 为什么使用virtual service Virtual services举例 hosts字段 ...

  6. 风扇转速通过FPGA采样

    1.风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4: 2.采样0.6S内的风扇detect信号的上升沿个数:0. ...

  7. java ->IO流_字节流

    字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 字节输出流OutputStream OutputStre ...

  8. 容器技术之LXC WEB管理工具LXC WEB Panel

    前一篇博文中主要说了下,lxc容器在Linux上的简单管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12901493.html:今天我们来介绍下lxc的图 ...

  9. void 型指针的高阶用法,你掌握了吗?

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用.测试环境采用 IAR for ARM 8.40.1 什么是void指针 void指针 ...

  10. Python 图像处理 OpenCV (1):入门

    引言 又开一个新的系列分享,对图像处理感兴趣的同学可以关注这个系列. 更新频率尽量保持一周两到三次推送. 新系列第一件事儿当然是资源推荐,下面是一些有关 OpenCV 的资源链接: 资源链接: 官方网 ...