提交 bc2e6006 编写于 作者: 饶先宏's avatar 饶先宏

202108051334

上级 70a13ee1
......@@ -142,12 +142,12 @@ int main(int argc, char* argv[])
if (clocks == 2)
objectCall1(sim, SetReset, 1);
clocks++;
if ((clocks & 0xFFF) == 0) {
if ((clocks & 0x3FFF) == 0) {
time_t thistime = time(NULL);
printf("clocks: %lld, TSPD=%lfcps, LSPD=%lfcps\n",
clocks,
(double)clocks / (double)(thistime - starttime),
4096.0 / (double)(thistime - lasttime));
4096.0 * 4 / (double)(thistime - lasttime));
lasttime = time(NULL);
}
} while (running);
......
......@@ -197,9 +197,11 @@ static int hdl4sesim_collect_module(HOBJECT module, sHDL4SESim* pobj)
static int hdl4sesim_hdl4se_simulator_SetTopModule(HOBJECT object, HOBJECT topmodule)
{
sHDL4SESim* pobj;
void* a[1024];
pobj = (sHDL4SESim*)objectThis(object);
objectQueryInterface(topmodule, IID_HDL4SEMODULE, (const void**)&pobj->topmodule);
hdl4semoduleTraversal(pobj->topmodule, hdl4sesim_collect_module, pobj);
/*连接topmodule到sim模块,0.wClk, 1.nwReset*/
hdl4se_module_ConnectInput(&pobj->topmodule->data, 0, object, 0);
hdl4se_module_ConnectInput(&pobj->topmodule->data, 1, object, 1);
......@@ -224,9 +226,12 @@ static int hdl4sesim_hdl4se_simulator_ClkTick(HOBJECT object)
for (i = 0; i < pobj->singlethreadmodules.itemcount; i++) {
hdl4se_module_ClkTick(&((IHDL4SEModuleVar*)(pobj->singlethreadmodules.array[i]))->data);
}
//#pragma omp parallel for num_threads(4)
#pragma omp parallel for num_threads(2)
//for (i = 0; i < pobj->multithreadmodules.itemcount; i++) {
for (i = 0; i < pobj->multithreadmodules.itemcount; i++) {
hdl4se_module_ClkTick(&((IHDL4SEModuleVar*)(pobj->multithreadmodules.array[i]))->data);
// int j = i / 16 + (i % 16) * 16;
// if (j < pobj->multithreadmodules.itemcount)
hdl4se_module_ClkTick(&((IHDL4SEModuleVar*)(pobj->multithreadmodules.array[i]))->data);
}
return 0;
}
......@@ -243,7 +248,7 @@ static int hdl4sesim_hdl4se_simulator_Setup(HOBJECT object)
for (i = 0; i < pobj->singlethreadmodules.itemcount; i++) {
hdl4se_module_Setup(&((IHDL4SEModuleVar*)(pobj->singlethreadmodules.array[i]))->data);
}
//#pragma omp parallel for num_threads(4)
#pragma omp parallel for num_threads(2)
for (i = 0; i < pobj->multithreadmodules.itemcount; i++) {
hdl4se_module_Setup(&((IHDL4SEModuleVar*)(pobj->multithreadmodules.array[i]))->data);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册