summaryrefslogtreecommitdiff
path: root/src/mem/slicc/symbols
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/slicc/symbols')
-rw-r--r--src/mem/slicc/symbols/StateMachine.py25
-rw-r--r--src/mem/slicc/symbols/Type.py4
2 files changed, 21 insertions, 8 deletions
diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py
index e66743255..ddaa3e440 100644
--- a/src/mem/slicc/symbols/StateMachine.py
+++ b/src/mem/slicc/symbols/StateMachine.py
@@ -518,7 +518,10 @@ m_dma_sequencer_ptr->setController(this);
code('m_num_controllers++;')
for var in self.objects:
if var.ident.find("mandatoryQueue") >= 0:
- code('m_${{var.c_ident}}_ptr = new ${{var.type.c_ident}}();')
+ code('''
+m_${{var.c_ident}}_ptr = new ${{var.type.c_ident}}();
+m_${{var.c_ident}}_ptr->setReceiver(this);
+''')
code.dedent()
code('''
@@ -573,7 +576,7 @@ $c_ident::init()
code('*$vid = ${{vtype["default"]}}; // $comment')
# Set ordering
- if "ordered" in var and "trigger_queue" not in var:
+ if "ordered" in var:
# A buffer
code('$vid->setOrdering(${{var["ordered"]}});')
@@ -583,10 +586,16 @@ $c_ident::init()
code('$vid->setRandomization(${{var["random"]}});')
# Set Priority
- if vtype.isBuffer and \
- "rank" in var and "trigger_queue" not in var:
+ if vtype.isBuffer and "rank" in var:
code('$vid->setPriority(${{var["rank"]}});')
+ # Set sender and receiver for trigger queue
+ if var.ident.find("triggerQueue") >= 0:
+ code('$vid->setSender(this);')
+ code('$vid->setReceiver(this);')
+ elif vtype.c_ident == "TimerTable":
+ code('$vid->setClockObj(this);')
+
else:
# Network port object
network = var["network"]
@@ -601,6 +610,12 @@ $vid = m_net_ptr->get${network}NetQueue(m_version + base, $ordered, $vnet, "$vne
code('assert($vid != NULL);')
+ # Set the end
+ if network == "To":
+ code('$vid->setSender(this);')
+ else:
+ code('$vid->setReceiver(this);')
+
# Set ordering
if "ordered" in var:
# A buffer
@@ -647,8 +662,6 @@ $vid->setDescription("[Version " + to_string(m_version) + ", ${ident}, name=${{v
code('${{port.code}}.setConsumer(this);')
# Set the queue descriptions
code('${{port.code}}.setDescription("[Version " + to_string(m_version) + ", $ident, $port]");')
- # Set the clock object
- code('${{port.code}}.setClockObj(this);')
# Initialize the transition profiling
code()
diff --git a/src/mem/slicc/symbols/Type.py b/src/mem/slicc/symbols/Type.py
index f40036e8e..6ee48ba8b 100644
--- a/src/mem/slicc/symbols/Type.py
+++ b/src/mem/slicc/symbols/Type.py
@@ -246,7 +246,7 @@ $klass ${{self.c_ident}}$parent
''', klass="class")
if self.isMessage:
- code('(Cycles curTime) : %s(curTime) {' % self["interface"])
+ code('(Tick curTime) : %s(curTime) {' % self["interface"])
else:
code('()\n\t\t{')
@@ -291,7 +291,7 @@ $klass ${{self.c_ident}}$parent
params = ', '.join(params)
if self.isMessage:
- params = "const Cycles curTime, " + params
+ params = "const Tick curTime, " + params
code('${{self.c_ident}}($params)')