We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
Logic Design, Part 4
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:32Refresh our memories on module inlining
🏃
📖
0:32Refresh our memories on module inlining
🏃
📖
0:32Refresh our memories on module inlining
🏃
📖
3:04Review the addition of the generic OperatorNode
📖
3:04Review the addition of the generic OperatorNode
📖
3:04Review the addition of the generic OperatorNode
📖
5:35Hope to get to shifters, but determine first to get a simulator working
🗩
5:35Hope to get to shifters, but determine first to get a simulator working
🗩
5:35Hope to get to shifters, but determine first to get a simulator working
🗩
6:27The plan for the simulator
🗩
6:27The plan for the simulator
🗩
6:27The plan for the simulator
🗩
7:33Determine to prepend a prefix to the names of inlined nodes
🗩
7:33Determine to prepend a prefix to the names of inlined nodes
🗩
7:33Determine to prepend a prefix to the names of inlined nodes
🗩
9:01Make ModuleInliner prepend the name of inlined nodes with that of the instance
9:01Make ModuleInliner prepend the name of inlined nodes with that of the instance
9:01Make ModuleInliner prepend the name of inlined nodes with that of the instance
13:26Run it to see our prefixed node names
🏃
13:26Run it to see our prefixed node names
🏃
13:26Run it to see our prefixed node names
🏃
13:39Enable the Cyclic module to handle modules contained in other structures, and change ModuleInliner to use the original, not lowered, name
13:39Enable the Cyclic module to handle modules contained in other structures, and change ModuleInliner to use the original, not lowered, name
13:39Enable the Cyclic module to handle modules contained in other structures, and change ModuleInliner to use the original, not lowered, name
15:08Run it to see our unadulterated module class name
🏃
15:08Run it to see our unadulterated module class name
🏃
15:08Run it to see our unadulterated module class name
🏃
15:18spriithy Anyways bye, it's like 3am here
🗪
15:18spriithy Anyways bye, it's like 3am here
🗪
15:18spriithy Anyways bye, it's like 3am here
🗪
15:37Set up to start work on the simulator as a compiler
🗩
15:37Set up to start work on the simulator as a compiler
🗩
15:37Set up to start work on the simulator as a compiler
🗩
18:54Define Linearizer Visitor, noting down the nodes it'll need to handle
18:54Define Linearizer Visitor, noting down the nodes it'll need to handle
18:54Define Linearizer Visitor, noting down the nodes it'll need to handle
22:34Create InputNode() Linearizer, introducing make_temp() and instruction()
22:34Create InputNode() Linearizer, introducing make_temp() and instruction()
22:34Create InputNode() Linearizer, introducing make_temp() and instruction()
26:24Create OutputNode(), OperatorNode(), IndexNode(), SliceNode(), ConstantNode() and WireNode() Linearizers
26:24Create OutputNode(), OperatorNode(), IndexNode(), SliceNode(), ConstantNode() and WireNode() Linearizers
26:24Create OutputNode(), OperatorNode(), IndexNode(), SliceNode(), ConstantNode() and WireNode() Linearizers
33:03Introduce linearize()
33:03Introduce linearize()
33:03Introduce linearize()
36:04Test linearize() on Inv2
36:04Test linearize() on Inv2
36:04Test linearize() on Inv2
38:02The influence of muscle memory on the switch from Python 2 to 3
🎲
38:02The influence of muscle memory on the switch from Python 2 to 3
🎲
38:02The influence of muscle memory on the switch from Python 2 to 3
🎲
38:22Check out the result of our linearize()
🏃
38:22Check out the result of our linearize()
🏃
38:22Check out the result of our linearize()
🏃
38:41More prettily print out the results of linearize()
38:41More prettily print out the results of linearize()
38:41More prettily print out the results of linearize()
39:58elavid So who is this Mon, age 36?
🗪
39:58elavid So who is this Mon, age 36?
🗪
39:58elavid So who is this Mon, age 36?
🗪
40:04Fix up compile errors
40:04Fix up compile errors
40:04Fix up compile errors
40:28Check out the more prettily printed result of our linearize()
🏃
40:28Check out the more prettily printed result of our linearize()
🏃
40:28Check out the more prettily printed result of our linearize()
🏃
40:49Further prettify the printed result of linearize()
40:49Further prettify the printed result of linearize()
40:49Further prettify the printed result of linearize()
42:03Check out the yet prettier printed result of our linearize()
🏃
42:03Check out the yet prettier printed result of our linearize()
🏃
42:03Check out the yet prettier printed result of our linearize()
🏃
42:27Print the node names in lowercase
42:27Print the node names in lowercase
42:27Print the node names in lowercase
42:55Consult the result of linearize(), to determine that it looks right
🏃
42:55Consult the result of linearize(), to determine that it looks right
🏃
42:55Consult the result of linearize(), to determine that it looks right
🏃
43:56Compiling our linearized circuits, taking advantage of Python's arbitrary precision integers
🗩
43:56Compiling our linearized circuits, taking advantage of Python's arbitrary precision integers
🗩
43:56Compiling our linearized circuits, taking advantage of Python's arbitrary precision integers
🗩
45:09Generating IndexNode and SliceNode for bit vectors
🗩
45:09Generating IndexNode and SliceNode for bit vectors
🗩
45:09Generating IndexNode and SliceNode for bit vectors
🗩
49:10Bit concatenation
🗩
49:10Bit concatenation
🗩
49:10Bit concatenation
🗩
52:27Introduce compile()
52:27Introduce compile()
52:27Introduce compile()
1:12:38Check out the results of compile()
🏃
1:12:38Check out the results of compile()
🏃
1:12:38Check out the results of compile()
🏃
1:12:56Create CompilerTest module to test compile() with bit shifting
1:12:56Create CompilerTest module to test compile() with bit shifting
1:12:56Create CompilerTest module to test compile() with bit shifting
1:13:44Check out the results of compile() on bit shifting
🏃
1:13:44Check out the results of compile() on bit shifting
🏃
1:13:44Check out the results of compile() on bit shifting
🏃
1:14:54Add some slicing in CompilerTest, and fix compile() to initialise masks as a set
1:14:54Add some slicing in CompilerTest, and fix compile() to initialise masks as a set
1:14:54Add some slicing in CompilerTest, and fix compile() to initialise masks as a set
1:15:35Check out the results of compile() on slicing
🏃
1:15:35Check out the results of compile() on slicing
🏃
1:15:35Check out the results of compile() on slicing
🏃
1:15:53Make compile() prepend mask lines with "mask_"
1:15:53Make compile() prepend mask lines with "mask_"
1:15:53Make compile() prepend mask lines with "mask_"
1:17:00Check out our prepended mask lines
🏃
1:17:00Check out our prepended mask lines
🏃
1:17:00Check out our prepended mask lines
🏃
1:17:18Add multi-concatenation in CompilerTest
1:17:18Add multi-concatenation in CompilerTest
1:17:18Add multi-concatenation in CompilerTest
1:17:50Check out the results of compile() on multi-concatenation
🏃
1:17:50Check out the results of compile() on multi-concatenation
🏃
1:17:50Check out the results of compile() on multi-concatenation
🏃
1:18:08binjimin Could just use 0b11...11 for mask instead, right?
🗪
1:18:08binjimin Could just use 0b11...11 for mask instead, right?
🗪
1:18:08binjimin Could just use 0b11...11 for mask instead, right?
🗪
1:19:11Test operators in CompilerTest
🏃
🖮
1:19:11Test operators in CompilerTest
🏃
🖮
1:19:11Test operators in CompilerTest
🏃
🖮
1:22:11Test when() in CompilerTest
1:22:11Test when() in CompilerTest
1:22:11Test when() in CompilerTest
1:22:49Check out the results of compile() on when()
🏃
1:22:49Check out the results of compile() on when()
🏃
1:22:49Check out the results of compile() on when()
🏃
1:23:25The idea for compiling a module
🗩
1:23:25The idea for compiling a module
🗩
1:23:25The idea for compiling a module
🗩
1:27:54The idea behind a bundle
🗩
1:27:54The idea behind a bundle
🗩
1:27:54The idea behind a bundle
🗩
1:28:44Fix compile() to mask upon reading from an input
1:28:44Fix compile() to mask upon reading from an input
1:28:44Fix compile() to mask upon reading from an input
1:29:25Bundles, continued
🗩
1:29:25Bundles, continued
🗩
1:29:25Bundles, continued
🗩
1:31:23Create compile_template1
1:31:23Create compile_template1
1:31:23Create compile_template1
1:36:05Enable compile() to indent and init the lines
1:36:05Enable compile() to indent and init the lines
1:36:05Enable compile() to indent and init the lines
1:40:53Check out our indented and initialised lines
🏃
1:40:53Check out our indented and initialised lines
🏃
1:40:53Check out our indented and initialised lines
🏃
1:41:03Make compile() evaluate the args, inputs and outputs, and perform substitutions
1:41:03Make compile() evaluate the args, inputs and outputs, and perform substitutions
1:41:03Make compile() evaluate the args, inputs and outputs, and perform substitutions
1:44:41Fix all indentation
1:44:41Fix all indentation
1:44:41Fix all indentation
1:47:10Check out our generated code
🏃
1:47:10Check out our generated code
🏃
1:47:10Check out our generated code
🏃
1:47:16Enable compile() to execute its generated code, fixing the compile_template and code ordering
🏃
1:47:16Enable compile() to execute its generated code, fixing the compile_template and code ordering
🏃
1:47:16Enable compile() to execute its generated code, fixing the compile_template and code ordering
🏃
1:50:42Run it to see that it worked
🏃
1:50:42Run it to see that it worked
🏃
1:50:42Run it to see that it worked
🏃
1:51:05Create a verifiable test in CompilerTest
1:51:05Create a verifiable test in CompilerTest
1:51:05Create a verifiable test in CompilerTest
1:51:54Run it and consider that it's not right
🏃
1:51:54Run it and consider that it's not right
🏃
1:51:54Run it and consider that it's not right
🏃
1:53:04binjimin What's precedence of @?
🗪
1:53:04binjimin What's precedence of @?
🗪
1:53:04binjimin What's precedence of @?
🗪
1:53:41Fix our code.evaluate() call in compile() to determine that it totally works
🏃
1:53:41Fix our code.evaluate() call in compile() to determine that it totally works
🏃
1:53:41Fix our code.evaluate() call in compile() to determine that it totally works
🏃
1:54:20Enable compile() to check the results itself
1:54:20Enable compile() to check the results itself
1:54:20Enable compile() to check the results itself
1:55:32Run it to see that it's pretty good
🏃
1:55:32Run it to see that it's pretty good
🏃
1:55:32Run it to see that it's pretty good
🏃
1:56:00Stateful systems
🗩
1:56:00Stateful systems
🗩
1:56:00Stateful systems
🗩
1:57:07Consider the performance of this simulator
🗩
1:57:07Consider the performance of this simulator
🗩
1:57:07Consider the performance of this simulator
🗩
1:59:19That's it for today, with a glimpse into the future going back to logic design
🗩
1:59:19That's it for today, with a glimpse into the future going back to logic design
🗩
1:59:19That's it for today, with a glimpse into the future going back to logic design
🗩