diff options
| author | azidar | 2015-07-13 16:22:43 -0700 |
|---|---|---|
| committer | azidar | 2015-07-14 11:29:55 -0700 |
| commit | 271e1bf5ed56847c1ce7d50bdb7f1db9ccc5ea55 (patch) | |
| tree | 8b1cdfcfc97a9710bd1bc5be973578f712cfa253 /notes/alpha.txt | |
| parent | 0bfb3618b654a4082cc2780887b3ca32e374f455 (diff) | |
Added tests for clocks. Added remove scope and special chars passes. Added tests. Made more tests pass
Diffstat (limited to 'notes/alpha.txt')
| -rw-r--r-- | notes/alpha.txt | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/notes/alpha.txt b/notes/alpha.txt new file mode 100644 index 00000000..0f245bf7 --- /dev/null +++ b/notes/alpha.txt @@ -0,0 +1,77 @@ +========= RENAME STRATEGY ========= +Special chars ~!@#$%^*-_+=?/ get renamed to _XX, where XX is a hex representation of the symbol + +a_x +=> +a_XXx + +a_XXx +=> +a_XXXXx + +This guarantees all symbols use a subset of the character set + +Now, I need to rename duplicate symbols, so: + +wire x +when p + wire x + +=> + +wire x%0 +when p + wire x%1 + +We know that all new symbols are unique because they use a special character +At this point, all names are unique. + +-- Bundle Expansion -- +To deal with bundle expansion, use another different special character: + +wire x : {a,b} + +=> + +wire x#a +wire x#b + +-- Vector Expansion -- + +To deal with bundle expansion, use another different special character: + +wire x : UInt<1>[3] + +=> + +wire x$0 : UInt<1> +wire x$1 : UInt<1> +wire x$2 : UInt<1> + +-- Creating Temporaries -- +To deal with creating temporaries, use another different special character: + +node x = a + b * c +=> +node x!0 = b * c +node x!1 = a + x!0 +node x = x!1 + +Finally, to deal with backends that only use subsets of the special characters, do another rename step to remove special characters (must remove $ again!) + +ASCII Hex +_ 5F __ +~ 7E _A +! 21 _B +@ 40 _C +# 23 _D +$ 24 _E +% 25 _F +^ 5E _G +* 2A _H +- 2D _I ++ 2B _J += 3D _K +? 3F _L +/ 2F _M + |
