Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
饶先宏
hdl4se
提交
859b16f1
H
hdl4se
项目概览
饶先宏
/
hdl4se
通知
12
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hdl4se
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
859b16f1
编写于
8月 11, 2021
作者:
饶先宏
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
202108110628
上级
7b58b720
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
86 addition
and
14 deletion
+86
-14
bignumber/CMakeLists.txt
bignumber/CMakeLists.txt
+2
-0
examples/hdl4secnn/googlenet/verilog/main.c
examples/hdl4secnn/googlenet/verilog/main.c
+1
-1
hdl4secell/include/hdl4secell.h
hdl4secell/include/hdl4secell.h
+1
-0
hdl4secell/src/hdl4se_variable.c
hdl4secell/src/hdl4se_variable.c
+36
-0
hdl4sesim/CMakeLists.txt
hdl4sesim/CMakeLists.txt
+2
-0
hdl4sesim/src/hdl4sesim.c
hdl4sesim/src/hdl4sesim.c
+11
-1
hdl4sesim/src/hdl4sevcdfile.c
hdl4sesim/src/hdl4sevcdfile.c
+33
-12
未找到文件。
bignumber/CMakeLists.txt
浏览文件 @
859b16f1
...
...
@@ -8,6 +8,8 @@ add_library (bignumber STATIC
"src/bignumber.c"
)
add_definitions
(
-D_CRT_SECURE_NO_WARNINGS
)
include_directories
(
"../../lcom/include"
)
include_directories
(
"../bignumber/include"
)
include_directories
(
"../hdl4seutils/include"
)
...
...
examples/hdl4secnn/googlenet/verilog/main.c
浏览文件 @
859b16f1
...
...
@@ -49,7 +49,7 @@ unsigned long long clocks = 0;
static
int
running
=
1
;
#define VCDOUTPUT
0
#define VCDOUTPUT
1
int
cnnInit
();
...
...
hdl4secell/include/hdl4secell.h
浏览文件 @
859b16f1
...
...
@@ -230,6 +230,7 @@ int varGet_S32(ModuleVariable * a);
unsigned
int
varGet_U32
(
ModuleVariable
*
a
);
long
long
varGet_S64
(
ModuleVariable
*
a
);
unsigned
long
long
varGet_U64
(
ModuleVariable
*
a
);
int
varGetStr
(
ModuleVariable
*
a
,
int
base
,
char
*
str
,
int
buflen
);
ModuleVariable
*
variableCreate
(
int
type
,
int
width
,
int
portdirect
,
int
isunsigned
,
const
char
*
name
);
int
variableDestroy
(
ModuleVariable
*
var
);
...
...
hdl4secell/src/hdl4se_variable.c
浏览文件 @
859b16f1
...
...
@@ -325,6 +325,42 @@ ModuleVariable* varConstStr(const char* str)
return
temp
;
}
int
varGetStr
(
ModuleVariable
*
pobj
,
int
base
,
char
*
str
,
int
buflen
)
{
int
i
;
int
bc
;
str
[
0
]
=
0
;
bc
=
pobj
->
width
;
if
(
bc
==
0
)
{
strcpy
(
str
,
"0"
);
return
0
;
}
if
(
base
==
2
)
{
if
(
pobj
->
width
<
buflen
-
1
)
{
buflen
=
pobj
->
width
;
}
for
(
i
=
0
;
i
<
buflen
;
i
++
)
{
str
[
buflen
-
1
-
i
]
=
(
pobj
->
data
&
(
1llu
<<
i
))
?
'1'
:
'0'
;
}
str
[
buflen
]
=
'\0'
;
}
else
if
(
base
==
10
)
{
if
(
pobj
->
isunsigned
)
sprintf
(
str
,
"%llu"
,
pobj
->
data
);
else
sprintf
(
str
,
"%lld"
,
pobj
->
int64
);
}
else
{
if
(
pobj
->
isunsigned
)
sprintf
(
str
,
"%d'h%llx"
,
bc
,
pobj
->
data
);
else
sprintf
(
str
,
"%d'sh%llx"
,
bc
,
pobj
->
data
);
}
return
0
;
}
ModuleVariable
*
varConst
(
int
width
,
unsigned
long
long
v
)
{
ModuleVariable
*
temp
=
varTemp
(
width
,
1
);
...
...
hdl4sesim/CMakeLists.txt
浏览文件 @
859b16f1
...
...
@@ -10,6 +10,8 @@ add_library (hdl4sesim STATIC
"src/hdl4sevcdfile.c"
)
add_definitions
(
-D_CRT_SECURE_NO_WARNINGS
)
FIND_PACKAGE
(
OpenMP REQUIRED
)
if
(
OPENMP_FOUND
)
message
(
"OPENMP FOUND"
)
...
...
hdl4sesim/src/hdl4sesim.c
浏览文件 @
859b16f1
...
...
@@ -231,7 +231,7 @@ static int hdl4sesim_hdl4se_simulator_SetReset(HOBJECT object, int reset)
return
0
;
}
#define THREADCOUNT
10
#define THREADCOUNT
9
static
int
hdl4sesim_hdl4se_simulator_ClkTick
(
HOBJECT
object
)
{
...
...
@@ -509,6 +509,16 @@ softmax_168 complete
0.0356 n04505470 typewriter keyboard
clocks: 1818624, TSPD=9571.705263cps, LSPD=8192.000000cps
usebitint==0
clocks: 1802240, TSPD=14080.000000cps, LSPD=8192.000000cps
softmax_168 complete
0.4901 n03085013 computer keyboard, keypad
0.1591 n04264628 space bar
0.0543 n04074963 remote control, remote
0.0439 n03832673 notebook, notebook computer
0.0356 n04505470 typewriter keyboard
clocks: 1818624, TSPD=14097.860465cps, LSPD=16384.000000cps
threadcount=8
clocks: 1867776, TSPD=9529.469388cps, LSPD=16384.000000cps
softmax_168 complete
...
...
hdl4sesim/src/hdl4sevcdfile.c
浏览文件 @
859b16f1
...
...
@@ -57,9 +57,9 @@ const char* signal_code_char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV
typedef
struct
_signalitem
{
IHDL4SEModuleVar
*
detector
;
IBigNumber
*
*
lastvalue
;
c
onst
c
har
*
unitname
;
c
onst
c
har
*
signalname
;
ModuleVariable
*
lastvalue
;
char
*
unitname
;
char
*
signalname
;
int
index
;
int
width
;
char
vcdname
[
VCDNAMELEN
+
1
];
...
...
@@ -71,10 +71,11 @@ typedef struct _sHDL4SEVcdFile {
HDL4SEWAVEOUTPUT_VARDECLARE
IHDL4SEModuleVar
*
recordmodule
;
c
onst
c
har
*
filename
;
char
*
filename
;
FILE
*
pFile
;
IBigNumber
**
tempvar
;
ModuleVariable
*
tempvar
;
char
*
tempbuf
;
IDListVar
signallist
;
...
...
@@ -112,11 +113,15 @@ static int hdl4sevcdfileCreate(const PARAMITEM* pParams, int paramcount, HOBJECT
if
(
pParams
[
i
].
name
==
PARAMID_HDL4SEVCDFILE_FILENAME
)
{
if
(
pobj
->
filename
!=
NULL
)
mt_free
(
pobj
->
filename
);
pobj
->
filename
=
strdup
((
const
char
*
)
pParams
[
i
].
pvalue
);
pobj
->
filename
=
STRDUP
((
const
char
*
)
pParams
[
i
].
pvalue
);
}
}
dlistInit
(
&
pobj
->
signallist
);
#if USEBIGINT
pobj
->
tempvar
=
bigintegerCreate
(
32
);
#else
pobj
->
tempvar
=
variableCreate
(
VTYPE_TEMP
,
64
,
0
,
1
,
""
);
#endif
pobj
->
tempbuf
=
mt_malloc
(
MAXWIDTH
);
/* 返回生成的对象 */
OBJECT_RETURN_GEN
(
hdl4sevcdfile
,
pobj
,
pObject
,
CLSID_HDL4SEVCDFILE
);
...
...
@@ -177,8 +182,8 @@ static int hdl4sevcdfile_hdl4se_waveoutput_AddSignal(HOBJECT object, const char
pitem
=
(
signalitem
*
)
mt_malloc
(
sizeof
(
signalitem
));
if
(
pitem
==
NULL
)
return
-
1
;
pitem
->
unitname
=
strdup
(
unitname
);
pitem
->
signalname
=
strdup
(
signalname
);
pitem
->
unitname
=
STRDUP
(
unitname
);
pitem
->
signalname
=
STRDUP
(
signalname
);
pitem
->
detector
=
NULL
;
pitem
->
lastvalue
=
NULL
;
item
=
hdl4seCreatePtrListItem
(
hdl4seCreateConstString
(
signalname
),
pitem
);
...
...
@@ -209,6 +214,7 @@ static int hdl4sevcdfile_output_item_data(IDListVarPtr item, sHDL4SEVcdFile* pob
if
(
0
==
objectQueryInterface
(
item
,
IID_MAPSTR2PTRITEM
,
(
const
void
**
)
&
itemobj
))
{
objectCall1
(
itemobj
,
GetData
,
&
pitem
);
if
(
pitem
->
detector
!=
NULL
)
{
#if USEBIGINT
objectCall1
(
pobj
->
tempvar
,
SetWidth
,
pitem
->
width
);
hdl4se_module_GetValue
(
&
pitem
->
detector
->
data
,
pitem
->
index
,
pitem
->
width
,
pobj
->
tempvar
);
if
(
!
objectCall1
(
pobj
->
tempvar
,
IsEQ
,
pitem
->
lastvalue
))
{
...
...
@@ -216,6 +222,15 @@ static int hdl4sevcdfile_output_item_data(IDListVarPtr item, sHDL4SEVcdFile* pob
objectCall3
(
pitem
->
lastvalue
,
GetStr
,
2
,
pobj
->
tempbuf
,
MAXWIDTH
);
fprintf
(
pobj
->
pFile
,
"b%s %s
\n
"
,
pobj
->
tempbuf
,
pitem
->
vcdname
);
}
#else
pobj
->
tempvar
->
width
=
pitem
->
width
;
hdl4se_module_GetValue
(
&
pitem
->
detector
->
data
,
pitem
->
index
,
pitem
->
width
,
pobj
->
tempvar
);
if
(
pobj
->
tempvar
->
data
!=
pitem
->
lastvalue
->
data
)
{
pitem
->
lastvalue
->
data
=
pobj
->
tempvar
->
data
;
varGetStr
(
pitem
->
lastvalue
,
2
,
pobj
->
tempbuf
,
MAXWIDTH
);
fprintf
(
pobj
->
pFile
,
"b%s %s
\n
"
,
pobj
->
tempbuf
,
pitem
->
vcdname
);
}
#endif
}
objectRelease
(
itemobj
);
}
...
...
@@ -229,7 +244,11 @@ static int hdl4sevcdfile_output_item_data_init(IDListVarPtr item, sHDL4SEVcdFile
if
(
0
==
objectQueryInterface
(
item
,
IID_MAPSTR2PTRITEM
,
(
const
void
**
)
&
itemobj
))
{
objectCall1
(
itemobj
,
GetData
,
&
pitem
);
if
(
pitem
->
detector
!=
NULL
)
{
#if USEBIGINT
objectCall3
(
pitem
->
lastvalue
,
GetStr
,
2
,
pobj
->
tempbuf
,
MAXWIDTH
);
#else
varGetStr
(
pitem
->
lastvalue
,
2
,
pobj
->
tempbuf
,
MAXWIDTH
);
#endif
fprintf
(
pobj
->
pFile
,
"b%s %s
\n
"
,
pobj
->
tempbuf
,
pitem
->
vcdname
);
}
objectRelease
(
itemobj
);
...
...
@@ -263,9 +282,7 @@ static int hdl4sevcdfile_init_signal_item(IDListVarPtr item, init_signal_list_pa
{
signalitem
*
pitem
;
IMapStr2PtrItem
**
itemobj
;
const
char
*
pname
;
if
(
0
==
objectQueryInterface
(
item
,
IID_MAPSTR2PTRITEM
,
(
const
void
**
)
&
itemobj
))
{
objectCall1
(
itemobj
,
GetName
,
&
pname
);
objectCall1
(
itemobj
,
GetData
,
&
pitem
);
if
(
strcmp
(
param
->
pathname
,
pitem
->
unitname
)
==
0
)
{
int
count
,
i
;
...
...
@@ -281,7 +298,11 @@ static int hdl4sevcdfile_init_signal_item(IDListVarPtr item, init_signal_list_pa
int
j
;
int
codeindex
=
param
->
pobj
->
signalindex
++
;
pitem
->
detector
=
param
->
detector
;
#if USEBIGINT
pitem
->
lastvalue
=
bigintegerCreate2
(
var
->
width
,
var
->
isunsigned
);
#else
pitem
->
lastvalue
=
variableCreate
(
VTYPE_TEMP
,
var
->
width
,
0
,
var
->
isunsigned
,
""
);
#endif
pitem
->
index
=
i
;
pitem
->
width
=
var
->
width
;
for
(
j
=
0
;
j
<
VCDNAMELEN
;
j
++
)
{
...
...
@@ -373,7 +394,7 @@ IHDL4SEWaveOutput** hdl4sesimCreateVCDFile(const char* filename)
PARAMITEM
param
;
IHDL4SEWaveOutput
**
vcdfile
;
param
.
name
=
PARAMID_HDL4SEVCDFILE_FILENAME
;
param
.
pvalue
=
filename
;
param
.
pvalue
=
(
void
*
)
filename
;
A_u_t_o_registor_hdl4sevcdfile
();
ret
=
objectCreateEx
(
CLSID_HDL4SEVCDFILE
,
&
param
,
1
,
IID_HDL4SEWAVEOUTPUT
,
(
const
void
**
)
&
vcdfile
);
return
vcdfile
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录