So I'm a little confused about the difference between .Build and `f.write(verilog.convert(` I have a build chain which seems to be mostly standard ICE but it's distributed as a special docker container, it takes in verilog as far as I know So I think this means I want to `verilog.convert` instead of `Build()` ing until i'm certain amaranth build can target this board/chip fully correctly (I expect I'll still have to make a board definition so it can do platform.request()) However! If I try to do f.write(verilog.convert( as in the `UpCounter` build script in https://amaranth-lang.org/docs/amaranth/latest/start.html , on the source of the `LEDBlinker` from that same page, it gives me the error that `platform` was None when `platform.request` was called. So I guess that `platform` argument to Elaboratable is only filled in when `Build` is used? What do I get if I call `.Build()` with do\_program=false? Will it attempt to create a binary? If I want to generate verilog BUT I want platform.request to be available, which door do I want to come in through? (I suspect if I look in the reference docs this may become clearer but for now I'm just working through the tutorial.)