Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simple 2-bit adder fails #12

Open
s5bug opened this issue Jan 1, 2020 · 2 comments
Open

Simple 2-bit adder fails #12

s5bug opened this issue Jan 1, 2020 · 2 comments

Comments

@s5bug
Copy link

s5bug commented Jan 1, 2020

[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: minecrafthdl.MHDLException: Unknown Cell:ManuallyAdd
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at GraphBuilder.GraphBuilder.resolveType(GraphBuilder.java:762)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at GraphBuilder.GraphBuilder.buildGraph(GraphBuilder.java:132)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at minecrafthdl.block.blocks.Synthesizer.synth_gen(Synthesizer.java:119)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at minecrafthdl.block.blocks.Synthesizer.func_189540_a(Synthesizer.java:69)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.block.state.BlockStateContainer$StateImplementation.func_189546_a(BlockStateContainer.java:463)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.world.World.func_180496_d(World.java:519)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.world.World.func_175685_c(World.java:470)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.world.World.func_175722_b(World.java:423)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.world.World.markAndNotifyBlock(World.java:368)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.world.World.func_180501_a(World.java:349)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.block.BlockButton.func_180639_a(BlockButton.java:156)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.server.management.PlayerInteractionManager.func_187251_a(PlayerInteractionManager.java:451)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.network.NetHandlerPlayServer.func_184337_a(NetHandlerPlayServer.java:679)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.func_148833_a(SourceFile:55)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.func_148833_a(SourceFile:11)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.util.Util.func_181617_a(SourceFile:45)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:668)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:149)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471)
[01:03:47] [Server thread/INFO] [STDERR]: [minecrafthdl.block.blocks.Synthesizer:synth_gen:129]: 	at java.lang.Thread.run(Thread.java:748)

Verilog:

module ManuallyAdd(
  input   io_inputA,
  input   io_inputB,
  input   io_inputC,
  output  io_output,
  output  io_carry
);
  wire  _T; // @[Adder.scala 36:30]
  wire  _T_1; // @[Adder.scala 36:27]
  wire  _T_2; // @[Adder.scala 36:44]
  wire  _T_3; // @[Adder.scala 36:41]
  wire  _T_4; // @[Adder.scala 36:60]
  wire  _T_5; // @[Adder.scala 36:71]
  wire  _T_7; // @[Adder.scala 36:84]
  wire  _T_8; // @[Adder.scala 36:56]
  wire  _T_9; // @[Adder.scala 36:113]
  wire  _T_10; // @[Adder.scala 36:126]
  wire  _T_13; // @[Adder.scala 37:54]
  wire  _T_14; // @[Adder.scala 37:40]
  wire  _T_15; // @[Adder.scala 37:82]
  assign _T = io_inputB == 1'h0; // @[Adder.scala 36:30]
  assign _T_1 = io_inputA & _T; // @[Adder.scala 36:27]
  assign _T_2 = io_inputC == 1'h0; // @[Adder.scala 36:44]
  assign _T_3 = _T_1 & _T_2; // @[Adder.scala 36:41]
  assign _T_4 = io_inputA == 1'h0; // @[Adder.scala 36:60]
  assign _T_5 = _T_4 & io_inputB; // @[Adder.scala 36:71]
  assign _T_7 = _T_5 & _T_2; // @[Adder.scala 36:84]
  assign _T_8 = _T_3 | _T_7; // @[Adder.scala 36:56]
  assign _T_9 = io_inputA & io_inputB; // @[Adder.scala 36:113]
  assign _T_10 = _T_9 & io_inputC; // @[Adder.scala 36:126]
  assign _T_13 = io_inputA & io_inputC; // @[Adder.scala 37:54]
  assign _T_14 = _T_9 | _T_13; // @[Adder.scala 37:40]
  assign _T_15 = io_inputB & io_inputC; // @[Adder.scala 37:82]
  assign io_output = _T_8 | _T_10; // @[Adder.scala 36:13]
  assign io_carry = _T_14 | _T_15; // @[Adder.scala 37:12]
endmodule
module Adder(
  input   io_inputA_0,
  input   io_inputA_1,
  input   io_inputB_0,
  input   io_inputB_1,
  output  io_output_0,
  output  io_output_1,
  output  io_output_2
);
  wire  ManuallyAdd_io_inputA; // @[Adder.scala 14:53]
  wire  ManuallyAdd_io_inputB; // @[Adder.scala 14:53]
  wire  ManuallyAdd_io_inputC; // @[Adder.scala 14:53]
  wire  ManuallyAdd_io_output; // @[Adder.scala 14:53]
  wire  ManuallyAdd_io_carry; // @[Adder.scala 14:53]
  wire  ManuallyAdd_1_io_inputA; // @[Adder.scala 14:53]
  wire  ManuallyAdd_1_io_inputB; // @[Adder.scala 14:53]
  wire  ManuallyAdd_1_io_inputC; // @[Adder.scala 14:53]
  wire  ManuallyAdd_1_io_output; // @[Adder.scala 14:53]
  wire  ManuallyAdd_1_io_carry; // @[Adder.scala 14:53]
  ManuallyAdd ManuallyAdd ( // @[Adder.scala 14:53]
    .io_inputA(ManuallyAdd_io_inputA),
    .io_inputB(ManuallyAdd_io_inputB),
    .io_inputC(ManuallyAdd_io_inputC),
    .io_output(ManuallyAdd_io_output),
    .io_carry(ManuallyAdd_io_carry)
  );
  ManuallyAdd ManuallyAdd_1 ( // @[Adder.scala 14:53]
    .io_inputA(ManuallyAdd_1_io_inputA),
    .io_inputB(ManuallyAdd_1_io_inputB),
    .io_inputC(ManuallyAdd_1_io_inputC),
    .io_output(ManuallyAdd_1_io_output),
    .io_carry(ManuallyAdd_1_io_carry)
  );
  assign io_output_0 = ManuallyAdd_io_output; // @[Adder.scala 19:22]
  assign io_output_1 = ManuallyAdd_1_io_output; // @[Adder.scala 19:22]
  assign io_output_2 = ManuallyAdd_1_io_carry; // @[Adder.scala 14:19]
  assign ManuallyAdd_io_inputA = io_inputA_0; // @[Adder.scala 17:23]
  assign ManuallyAdd_io_inputB = io_inputB_0; // @[Adder.scala 18:23]
  assign ManuallyAdd_io_inputC = 1'h0; // @[Adder.scala 16:23]
  assign ManuallyAdd_1_io_inputA = io_inputA_1; // @[Adder.scala 17:23]
  assign ManuallyAdd_1_io_inputB = io_inputB_1; // @[Adder.scala 18:23]
  assign ManuallyAdd_1_io_inputC = ManuallyAdd_io_carry; // @[Adder.scala 16:23]
endmodule

Yes, it's generated Verilog, but a generated 1-bit adder works.

Also, adding two Vectors fails (input [1:0] a, input [1:0] b, output [2:0] c, assign c = a + b) with "To many input pins".

@s5bug
Copy link
Author

s5bug commented Jan 1, 2020

This Verilog surprisingly works fine until it has to process the actual inputs and outputs which use Vectors.

SevenSegmentDisplay.zip

@s5bug
Copy link
Author

s5bug commented Jan 1, 2020

Seems the issue is it can't do custom cells/other modules as cells.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant