Error : "This chip has a circle in its parts connections"

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Error : "This chip has a circle in its parts connections"

culchie
I am trying to complete the computer chip.
I keep getting the message in the topic title when I attempt to load the assembled chip
The incorporated cpu and memory chips both passed their tests.
The only other chip is the ROM32K.
The design seems to be wired in accordance with that suggested in the book.
I can only avoid getting this message if I break one of the links between the
memory and the cpu or stick a register in between but then of course the tests on the computer chip fail.
Any help would be appreciated.
Thanks

Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

culchie
Aaargh!!
I know it's something stupid on my part but I can't get past this "circle" error.
I am assuming that the CPU and memory chips are OK because the test scripts for them complete
successfully.
I am assuming that no other chips are required to make the computer chip other
than the memory, cpu and the ROM32K chip.
If the above assumptions are true then it seems the problem must lie in the way I joined them together but I can't see what is wrong with it.
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

Shimon Schocken
Administrator
Your assumption is correct.  The only chip parts you need for the Computer chip are CPU, Memory, and ROM32K.  Keep trying and let me know in a day or two how you're doing.  -- Shimon
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

culchie
Thanks for your reply.
I seem to have found what the problem was, inside my memory chip.
It seems like you can't have a circle if there is always a clock in the circuit.
I wanted to have the possibility of an output where all the bits were 0s to use as the output of memory
in situations where the address supplied was higher than the keyboard's address.
I manipulated the in[16] to get this 'zero[16]' for that purpose. So I suppose to the hardware emulator it looked like there was a path through the memory chip that bypassed the RAM (and hence the clock) and could then result in a circle from cpu out to cpu in?
The memory chip loaded and its test ran OK. Is this because when loading a chip the emulator checks to see if there is a circle inside it but doesn't check to see if there is a clock bypass in the whole chip?

I am a bit concerned about the results of the 2 rect tests even though I got the completed successfully
messages. The rectangles are in the upper left corners but they look a lot smaller than the
the one in the book and also, unlike that one, mine are wider than they are tall.
Is this OK or is it a sign that have I got something wrong?
Thanks
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

Vasily Yourchenko
Hello.

I ran into the same issue, even though my own memory chip doesn't handles overflow like that of the user above. Both my Memory chip and the CPU passed their individual tests, and all the chips from the previous chapters were used in built-in form. I did not use any custom chips (aside from, of course, the Memory and CPU for the Computer).

Everything should work on paper so I moved on to chapter 6, but I'd like to see if I can make it work, and, perhaps, if something is wrong.
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

FilipK
In reply to this post by culchie
Hi,

I have exactly the same error, but I doesn't manipulate in[16] in Memory.hdl. I doesn't have error when I just output RAM16K, when I use multiplex output from Screen and RAM16K I have error in Computer.hdl.

Memory.hdl and CPU.hdl pass tests.

When trying to workaround this error I added two ALUs into CPU.hdl and Register to inM, then it passed this error and even pass CPU.tst, but the final Rect.hack doesn't work.

Thanks for help.
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

FilipK
I finally solved the cryptic Error : "This chip has a circle in its parts connections". I wasted six hours on one stupid mistake, addressM.

For anyone seeing same thing a little help. Check all clocked outputs from CPU chip which goes into Memory chip, if it is really used as clocked (for example mixing non clocked load with clocked addressM in my case).

The sad thing is that hardware simulator doesn't show you which path to check. It can take a lot of time to figure mistake, because it is rather easy to pass Memory.tst with errors in using non clocked and clocked inputs.

But finishing it is really worth it ;)
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

nirflysher
This post was updated on .
Hello,
I'm in the same problem.
Both Memory.hdl and CPU.hdl passes the tests but the Computer.hdl files announcing the cryptic "This chip has a circle in its parts connections"
Can anyone be more specific on how to solve it ?
Regarding what FilipK wrote, why is it wrong to mix a clocked and non-clocked inputs on this hardware simulator ? For Example, the addressM output of the CPU chip is clocked since it is the output of the ARegister. I use it as a normal input to the Memory chip, Is it wrong ?

[Update]
I've solved this problem. The problem was indeed separating the clocked and non-clocked signals although I didn't understand the reason for the problem. Can anyone explain the reason for the error ?

In my case i used the "load" signal from the Memory.hdl (clocked - since connected to writeM on the CPU chip, that is the output of the ARegister)  as a selector between the Screen or Keyboard.
When I changed this signal to address[13] (non-clocked) all the problems gone away and the Computer.hdl test files run smoothly.
Reply | Threaded
Open this post in threaded view
|

Re: Error : "This chip has a circle in its parts connections"

cadet1620
Administrator
nirflysher wrote
In my case i used the "load" signal from the Memory.hdl (clocked - since connected to writeM on the CPU chip, that is the output of the ARegister)  as a selector between the Screen or Keyboard.
When I changed this signal to address[13] (non-clocked) all the problems gone away and the Computer.hdl test files run smoothly.
Is WriteM in your CPU clocked? In most of the solutions I've seen, it is decoded from the Instruction input using simple combinatorial logic.

If you'd like to email me your failing implementation (or the working one and instructions on how to make it fail), I'd be happy to look at it and comment.

--Mark