Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
饶先宏
hdl4se
提交
bb7d033b
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 搜索 >>
提交
bb7d033b
编写于
8月 13, 2021
作者:
饶先宏
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
202108130608
上级
9d7d3711
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
55 addition
and
9 deletion
+55
-9
examples/hdl4secnn/cnn/cnncell/cnncell_coeffbuf.c
examples/hdl4secnn/cnn/cnncell/cnncell_coeffbuf.c
+2
-1
examples/hdl4secnn/googlenet/verilog/main.c
examples/hdl4secnn/googlenet/verilog/main.c
+10
-2
hdl4secell/include/hdl4secell.h
hdl4secell/include/hdl4secell.h
+14
-2
hdl4secell/src/hdl4se_module.c
hdl4secell/src/hdl4se_module.c
+24
-2
hdl4secell/src/hdl4se_variable.c
hdl4secell/src/hdl4se_variable.c
+3
-0
hdl4sesim/src/hdl4sesim.c
hdl4sesim/src/hdl4sesim.c
+2
-2
未找到文件。
examples/hdl4secnn/cnn/cnncell/cnncell_coeffbuf.c
浏览文件 @
bb7d033b
...
...
@@ -121,9 +121,10 @@ DEFINE_FUNC(cncell_coeffbuf_gen_info, "") {
}
END_DEFINE_FUNC
DEFINE_FUNC
(
cncell_coeffbuf_gen_CoeffRead
,
"read"
)
{
vput
(
wCoeffReadValid
,
1
);
vput
(
wCoeffReadValid
,
0
);
if
(
vget
(
read
))
{
vput
(
bCoeffReadData
,
*
(
unsigned
int
*
)
&
(
pobj
->
databuf
[
vget
(
readaddr
)]));
vput
(
wCoeffReadValid
,
1
);
}
}
END_DEFINE_FUNC
...
...
examples/hdl4secnn/googlenet/verilog/main.c
浏览文件 @
bb7d033b
...
...
@@ -106,6 +106,14 @@ int main(int argc, char* argv[])
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/convolution_13"
,
"writeline"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/convolution_13"
,
"readline"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/convolution_13"
,
"lineindex"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"wCoeffRead"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"wCoeffReadValid"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"bCoeffReadAddr"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"bCoeffReadData"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"bCoeffOffset"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"read"
);
objectCall2
(
vcdfile
,
AddSignal
,
"/top/net/coeffbuf_13"
,
"readaddr"
);
objectCall1
(
vcdfile
,
SetTopModule
,
topmodule
);
objectCall0
(
vcdfile
,
StartRecord
);
...
...
@@ -121,12 +129,12 @@ int main(int argc, char* argv[])
if
(
clocks
==
2
)
objectCall1
(
sim
,
SetReset
,
1
);
clocks
++
;
if
((
clocks
&
0x
3
FFF
)
==
0
)
{
if
((
clocks
&
0x
F
FFF
)
==
0
)
{
time_t
thistime
=
time
(
NULL
);
printf
(
"clocks: %lld, TSPD=%lfcps, LSPD=%lfcps
\n
"
,
clocks
,
(
double
)
clocks
/
(
double
)(
thistime
-
starttime
),
4096
.
0
*
4
/
(
double
)(
thistime
-
lasttime
));
4096
.
0
*
16
/
(
double
)(
thistime
-
lasttime
));
lasttime
=
time
(
NULL
);
}
}
while
(
running
);
...
...
hdl4secell/include/hdl4secell.h
浏览文件 @
bb7d033b
...
...
@@ -91,7 +91,10 @@ typedef struct _sGeneralModule {
MODULE_FUNC
init_func
;
MODULE_FUNC
deinit_func
;
THREADLOCK
lock
;
void
*
pobj
;
const
char
*
clktick_depend
;
void
*
pobj
;
void
*
priv_data
;
void
*
func_param
;
int
canruninthread
;
...
...
@@ -116,6 +119,7 @@ typedef struct sModuleVariable {
sGeneralModule
*
moduledata
;
IHDL4SEModuleVar
*
module
;
int
moduleportindex
;
char
*
depend_list
;
PointerArray
functions
;
/* 依赖它的函数 */
PointerArray
variables
;
/* 依赖它的变量 */
int
updatedisset
;
...
...
@@ -296,6 +300,7 @@ int hdl4se_module_Valid(sGeneralModule* pobj);
int
hdl4se_module_GetName
(
sGeneralModule
*
pobj
,
const
char
**
pname
);
int
hdl4se_module_ConnectInput
(
sGeneralModule
*
pobj
,
int
index
,
HOBJECT
from
,
int
fromindex
);
int
hdl4se_module_GetValue
(
sGeneralModule
*
pobj
,
int
index
,
int
width
,
ModuleVariable
*
value
);
int
hdl4se_module_InitDepend
(
sGeneralModule
*
pobj
);
int
hdl4se_module_ClkTick
(
sGeneralModule
*
pobj
);
int
hdl4se_module_Setup
(
sGeneralModule
*
pobj
);
int
hdl4se_module_AddPort
(
sGeneralModule
*
pobj
,
const
char
*
name
,
int
width
,
int
isunsigned
,
int
portdirect
);
...
...
@@ -390,6 +395,7 @@ static int M_ID(Create)(const PARAMITEM* pParams, int paramcount, HOBJECT* pObje
#define END_MODULE_INIT(module_name) \
hdl4se_module_InitDepend(pobj->pmodule); \
return EIID_OK; \
} \
\
...
...
@@ -426,6 +432,7 @@ static int M_ID(_module_init)(sGeneralModule* pdata) {\
pobj->pmodule = pdata; \
#define END_GEN_MODULE_INIT \
hdl4se_module_InitDepend(pdata); \
return EIID_OK; \
} \
\
...
...
@@ -528,7 +535,12 @@ do { \
} while (0)
#define SETUP_FUNC(func) pobj->pmodule->setup_func = func
#define CLKTICK_FUNC(func) pobj->pmodule->clktick_func = func
#define CLKTICK_FUNC(func) \
do { \
pobj->pmodule->clktick_func = func; \
pobj->pmodule->clktick_depend = STRDUP(__##func##_depend_list); \
}while (0)
#define DEINIT_FUNC(func) pobj->pmodule->deinit_func = func
#define INIT_FUNC(func) pobj->pmodule->init_func = func
...
...
hdl4secell/src/hdl4se_module.c
浏览文件 @
bb7d033b
...
...
@@ -479,6 +479,7 @@ int hdl4se_module_Init(sGeneralModule* pobj, void* obj, const PARAMITEM* pParams
pointerarrayInit
(
&
pobj
->
funcs
);
pobj
->
pobj
=
obj
;
pobj
->
name
=
NULL
;
pobj
->
clktick_depend
=
NULL
;
pobj
->
parent
=
NULL
;
pobj
->
func_param
=
obj
;
pobj
->
setup_func
=
NULL
;
...
...
@@ -517,6 +518,8 @@ void hdl4se_module_DeInit(sGeneralModule* pobj)
{
if
(
pobj
->
name
!=
NULL
)
mt_free
(
pobj
->
name
);
if
(
pobj
->
clktick_depend
!=
NULL
)
free
(
pobj
->
clktick_depend
);
pointerarrayDestroy
(
&
pobj
->
variables
,
variableDestroy
);
pointerarrayDestroy
(
&
pobj
->
modules
,
objRelease
);
pointerarrayDestroy
(
&
pobj
->
parameters
,
mt_free
);
...
...
@@ -858,13 +861,20 @@ long long hdl4seGetParam(PointerArray* list, int index)
return
varGet_S64
(
temp
);
}
static
int
hdl4se_set_depend_variable
(
ModuleVariable
*
v
,
ModuleVariable
*
depend
);
int
hdl4se_set_depend_variables
(
ModuleVariable
*
v
,
const
char
*
depend_list
)
{
v
->
depend_list
=
STRDUP
(
depend_list
);
return
0
;
}
static
int
hdl4se_set_depend_variable
(
ModuleVariable
*
v
,
ModuleVariable
*
depend
);
static
int
hdl4se_set_depend_variable_list
(
ModuleVariable
*
v
)
{
const
char
*
token
;
if
(
v
==
NULL
)
return
-
1
;
token
=
strtok
(
depend_list
,
", "
);
if
(
v
->
depend_list
==
NULL
)
return
-
2
;
token
=
strtok
(
v
->
depend_list
,
", "
);
while
(
token
!=
NULL
)
{
int
i
;
for
(
i
=
0
;
i
<
v
->
moduledata
->
variables
.
itemcount
;
i
++
)
{
...
...
@@ -881,6 +891,18 @@ int hdl4se_set_depend_variables(ModuleVariable* v, const char* depend_list)
return
0
;
}
int
hdl4se_module_InitDepend
(
sGeneralModule
*
pobj
)
{
int
i
;
for
(
i
=
0
;
i
<
pobj
->
variables
.
itemcount
;
i
++
)
{
ModuleVariable
*
d
=
(
ModuleVariable
*
)
pobj
->
variables
.
array
[
i
];
if
(
d
==
NULL
)
continue
;
hdl4se_set_depend_variable_list
(
d
);
}
return
0
;
}
int
hdl4se_setgen_func_by_index
(
sGeneralModule
*
pobj
,
int
index
,
MODULE_FUNC
func
)
{
ModuleVariable
*
var
=
(
ModuleVariable
*
)
pobj
->
variables
.
array
[
index
];
...
...
hdl4secell/src/hdl4se_variable.c
浏览文件 @
bb7d033b
...
...
@@ -67,6 +67,7 @@ ModuleVariable* variableCreate(int type, int width, int portdirect, int isunsign
return
NULL
;
}
strcpy
(
var
->
name
,
name
);
var
->
depend_list
=
NULL
;
var
->
moduledata
=
NULL
;
var
->
genfuncindex
=
-
1
;
var
->
module
=
NULL
;
...
...
@@ -101,6 +102,8 @@ int variableDestroy(ModuleVariable* var)
objectRelease
(
var
->
data
);
objectRelease
(
var
->
data_reg
);
#endif
if
(
var
->
depend_list
!=
NULL
)
free
(
var
->
depend_list
);
var
->
data
=
0
;
mt_free
(
var
);
return
0
;
...
...
hdl4sesim/src/hdl4sesim.c
浏览文件 @
bb7d033b
...
...
@@ -133,7 +133,7 @@ static int hdl4sesimCreate(const PARAMITEM* pParams, int paramcount, HOBJECT* pO
REG
(
reset
,
1
);
GEN_FUNC
(
"wClk"
,
hdl4sesim_gen_wClk
);
GEN_FUNC
(
"nwReset"
,
hdl4sesim_gen_nwReset
);
hdl4se_module_InitDepend
(
pobj
->
pmodule
);
vartempInit
();
crtinit
();
...
...
@@ -238,7 +238,7 @@ static int hdl4sesim_hdl4se_simulator_SetReset(HOBJECT object, int reset)
return
0
;
}
#define THREADCOUNT
3
#define THREADCOUNT
9
static
int
hdl4sesim_hdl4se_simulator_ClkTick
(
HOBJECT
object
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录