在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1835|回复: 5

[讨论] 数字电路建模 - jchdl

[复制链接]
发表于 2018-9-7 23:41:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
jchdl:Jianchang Constructed Hardware Description Library,使用Java语言开发的硬件描述库。(Java是商标不让用,那就用名字 :-)

一. 设计目标

1. 设计目标

打通IC开发和Java生态,以Java生态的赋能IC开发。

2.   当前路径

当前的路径是基于Java语言,建立硬件建模库(library)。使用jchdl建立硬件模型之后,可以直接进行功能验证。然后转换为verilog语言,使用现有的工具集对转换后的模型进行验证、仿真等。

​

                               
登录/注册后可看大图
​


3. 现实

现实是,目前只实现了很小一部分功能。请视该项目为抛砖引玉,希望借助社区的力量(IC专业领域和Java开发领域的专家)来完善。

4. LICENSE

项目地址:https://github.com/wjcdx/jchdl
该项目使用较为宽松的BSD 3-Clause License。 希望能够成为一块好砖。


二. 基于Java


1. Java语言

a. Java语言是流行的面向对象编程语言(OOP)。
b. Java语言是跨平台的语言,基于Java语言的代码可以一次编译、到处运行。
c. Java语言是编程语言从近代走向现代的象征。


2. Java生态

Java不只是Java语言,而是Java生态:

a. 先进的并不断演进的编程理念。各种设计模式、架构,基于Java衍生出来。


b. 开放的Java社区。基于Java的开源项目众多、层出不穷。Java社区奉行开放的文化,源源不断的产生各种开放的资源。相较之下,IC生态则由于较高的专业门槛,而在很大意义上是封闭的。


c. 强大的工具支持。开发环境有Eclipse/Netbeans/Intellij IDEA等强大的工具,相较之下Verilog使用的vim和EDA编辑工具犹如处在石器时代。其他如UML建模工具可以实现建模之后直接转化为Java代码,代码结构可视化工具可以直接分析Java代码生成结构图等。


d. 品类繁多且仍在不断增加的各种库:每一种库即是对一个方面的赋能。


e. 先进的Java虚拟机(JVM):JVM已经成为很多想要实现跨平台的语言的首选后端。很多新生的语言都是基于JVM设计,代码最终生成与Java一样的字节码(class)文件,供Java虚拟机解释运行。

​

                               
登录/注册后可看大图
​



三. 当前实现

由于时间和能力限制,目前仅实现了如下功能:





门和开关层(GSL)建模模型,可以基于建模方法论(Methodology)进行建模(model a hardware model);


门和开关层(GSL)模型验证,可以直接运行查看运行结果进行验证;


GSL模型转化为Verilog语言;


RTL层建模模型,与Verilog很贴近;


RTL层模型验证,可以直接运行查看运行结果进行验证;


RTL层模型转化为Verilog语言;




四. 辅助建模

当前实现的功能有限,没有建模等后续阶段的支持,所以当前只能进行辅助建模。

五. 模型验证

验证原理:


1. GSL模型验证,基于值的传播。值的变化在线和节点上进行传播,如果值没有变化则不会进行传播(可以避免拓扑中的环导致的死循环)。


2. RTL模型验证,基于事件驱动模型,参考Verilog event schedule机制。当有wire或reg的值变化,而又有依赖这个reg和wire的逻辑时,则执行这段逻辑。逻辑的执行又导致新的事件产生。在一个time slot中,一直执行,直到没有新的事件产生为止。


验证方法:


1. 使用Intellj IDEA等IDE提供的断点功能,在执行时停下来观察变量的值。也可以单步执行、步入、步出等功能跟踪代码执行流程。


2. 使用Junit库进行单元测试。


3.使用log机制,记录执行过程中的log,执行完成之后再行分析。


如果格式有问题,请看如下文档:
数字电路建模 - jchdl
jchdl - 门和开关层(GSL)
jchdl - 初次使用

可以关注博客:www.cnblogs.com/wjcdx
也可以系通过博客关注公众号。
发表于 2018-9-8 12:31:32 | 显示全部楼层
lookgood
 楼主| 发表于 2018-9-10 12:30:31 | 显示全部楼层
 楼主| 发表于 2018-9-11 10:33:14 | 显示全部楼层
 楼主| 发表于 2018-9-13 10:24:13 | 显示全部楼层
这几天看了下SystemC,发现与jchdl相似的地方,或者jchdl与之相似的地方。

但总体而言:
1. jchdl的模型更简单,更清晰;
2. jchdl还有一些建模需要的工具需要补充,比如: inout port, RTL需要增加logic以支持四值逻辑,再者jchdl要考虑如何实现sal或者SystemC里面的tlm;
3. SystemC还是把建模和验证混在一起,虽然相对Verilog而言好一些,但仍是个杂烩(中性,就不用大了);
 楼主| 发表于 2018-9-18 13:02:51 | 显示全部楼层
1. GSL暂时不会添加Inout port支持,会把模型变的过于复杂(可能Inout不是gsl的概念,而只是物理上的复用,需要继续理清);

2. RTL添加Structure复合数据类型支持(待发布)。类似于C语言、SystemVerilog中的struct;用法类似于Chisel中的Bundle: public成员,直接a.b.c这样引用属性,而不使用getter方法。
转化为Verilog是会把structure摊平展开,如structA包含a,b,c三个primitive type,则展开为:
structA_a,structA_b,structA_c. 如果structure包含structure则递归展开。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-3 18:40 , Processed in 0.033998 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表