aboutsummaryrefslogtreecommitdiff
path: root/notes/notes.03.18.15.txt
diff options
context:
space:
mode:
authorazidar2015-03-18 17:28:31 -0700
committerazidar2015-03-18 17:28:31 -0700
commitc61accd4f1c46fa24cf7354d6326141950d827c8 (patch)
tree03f0d705a2e4c98e856bd4205e1d8a5ba412ce32 /notes/notes.03.18.15.txt
parentf0b8da76b17e568bd51a95ac04e7bad6ce4232c5 (diff)
Finished expand accessors and lower to ground
Diffstat (limited to 'notes/notes.03.18.15.txt')
-rw-r--r--notes/notes.03.18.15.txt52
1 files changed, 52 insertions, 0 deletions
diff --git a/notes/notes.03.18.15.txt b/notes/notes.03.18.15.txt
new file mode 100644
index 00000000..7fdb1c3b
--- /dev/null
+++ b/notes/notes.03.18.15.txt
@@ -0,0 +1,52 @@
+WHEN EXPANSION
+
+Goal:
+reg r
+wire w
+when p1 :
+ w := b
+ r.init := x
+ when p2 :
+ w := c
+ r := d
+r := e
+
+==>
+
+1. Remove last connect semantics
+2. Remove conditional blocks
+3. Eliminate concept of scoping
+
+Exp | Value
+--------------
+r | e
+w | mux(p1,mux(p2,c,b),null)
+r.init | mux(p1,x,null)
+
+==>
+
+Symbolic Value - what can appear in value column
+sv = e
+ | null
+ | svmux(e,sv1,sv2)
+
+State:
+{
+ r => void
+ r.init => p1
+ w => svmux(e,_,_)
+}
+
+==>
+
+Build two tables, one mapping symbols to symbolic values, and another mapping symbols to declared types
+
+if w is a wire:
+merge {r=>x, w=>y} with {r=>x} under p : {r=>svmux(p,x,x), w=>y}
+
+if s is a reg:
+merge {r=>x,s=>y} with {r=>x} under p : {r=>svmux(p,x,x), s=>svmux(p,y,void)}
+
+
+
+