TF4060 Beta Program
Moderators: terriblefire, Terriblefire Moderator
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
I guess the question i have is where else to put the 128Mb? i liked having it contiguous and i liked not having it as a logical Z3 card for various reasons. Logical Z3 card would have the same issues in any case
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
Oliver_A
Re: TF4060 Beta Program
We all too easily forget that the 32-bit Amiga memory map dates back to 1990, a time when 128 MB, let alone 1.5 GB of Zorro III address space, was a sheer unthinkable amount of memory space. I could remember that Windows 98 on PC had issues with 128 MB of memory… ;-)
Anyway, it‘s not a matter of Z3 „seeing“ the 68030 bus transaction, but the memory slave sitting on the 68030 side seeing the Z3 bus transaction.
My interpretation of the spec is that the slave sitting on the 68030 side of the bus can not partake in any Z3<>Z3 transactions, which is the case when the A4091 targets memory located in that space. The location and range of that space is hard-coded in U714.
Sadly, I couldn‘t find the GAL sources to confirm my observation that the whole TF4060 memory is NOT in Z3 range, and thus, Buster correctly translates the ReA4091 DMA transactions, making them visible on the 68030 side of the bus.
But since it works, I don‘t question it any further. ;-)
Thanks for your intention to investigate this though!
Anyway, it‘s not a matter of Z3 „seeing“ the 68030 bus transaction, but the memory slave sitting on the 68030 side seeing the Z3 bus transaction.
My interpretation of the spec is that the slave sitting on the 68030 side of the bus can not partake in any Z3<>Z3 transactions, which is the case when the A4091 targets memory located in that space. The location and range of that space is hard-coded in U714.
Sadly, I couldn‘t find the GAL sources to confirm my observation that the whole TF4060 memory is NOT in Z3 range, and thus, Buster correctly translates the ReA4091 DMA transactions, making them visible on the 68030 side of the bus.
But since it works, I don‘t question it any further. ;-)
Thanks for your intention to investigate this though!
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
Oliver_A wrote: 30 Jul 2024 18:32 We all too easily forget that the 32-bit Amiga memory map dates back to 1990, a time when 128 MB, let alone 1.5 GB of Zorro III address space, was a sheer unthinkable amount of memory space. I could remember that Windows 98 on PC had issues with 128 MB of memory… ;-)
Anyway, it‘s not a matter of Z3 „seeing“ the 68030 bus transaction, but the memory slave sitting on the 68030 side seeing the Z3 bus transaction.
But the spec says DMA cycles are excluded from that. i.e. whenever BGACK is low. Its not super clear i'll give you that but thats what i think it says. Otherwise how would the CPU bus snoop the cycle?
I've checked the AA3000+ for this already (using address 0x12100000/ I'll check the Z3 Fastlane next).My interpretation of the spec is that the slave sitting on the 68030 side of the bus can not partake in any Z3<>Z3 transactions, which is the case when the A4091 targets memory located in that space. The location and range of that space is hard-coded in U714.
Sadly, I couldn‘t find the GAL sources to confirm my observation that the whole TF4060 memory is NOT in Z3 range, and thus, Buster correctly translates the ReA4091 DMA transactions, making them visible on the 68030 side of the bus.
But since it works, I don‘t question it any further. ;-)
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
And confirmed with the Z3 Fastlane on a 4000CR. I can DMA to/from it to both halves of the 128Mb range.
The TF memory is inside the Z3 Mem range.. I have those sources.
For reference the TF Memory is 0x08000000 to 0x17ffffff
The TF memory is inside the Z3 Mem range.. I have those sources.
Code: Select all
ADRZ3 = A31 & A30 & A29 & A28 &
A27 & A26 & A25 & A24 &
!A23 & !A22 & !A21 & !A20 &
!A19 & !A18 /* ff000000-ff03ffff */
# !A31 & !(!A31 & !A30 & !A29 & !A28); /* 10000000-7fffffff */
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
Oliver_A
Re: TF4060 Beta Program
Interesting, thanks for digging that up.
So it seems that, even in case a Z3 bus master targets Z3 memory space:
* /BR is asserted by Buster on 68030 side. So even a Z3<>Z3 local transfer stalls the CPU
* Adresses and data are demultiplexed - so that the 68030 side can see them
* Buster allows the cycle to finish via STERM signal on 68030 side, in addition to DTACK on Zorro III side
Hmm, but what purpose does the ADRZ3 signal serve then??
What concerns me now is:
- What happens if a Z3 memory slave occupies $10000000 memory space?
- Will Autoconfig prevent this situation and avoid the memory space allocated by TF4060
Again, thanks for you thorough investigation!
So it seems that, even in case a Z3 bus master targets Z3 memory space:
* /BR is asserted by Buster on 68030 side. So even a Z3<>Z3 local transfer stalls the CPU
* Adresses and data are demultiplexed - so that the 68030 side can see them
* Buster allows the cycle to finish via STERM signal on 68030 side, in addition to DTACK on Zorro III side
Hmm, but what purpose does the ADRZ3 signal serve then??
What concerns me now is:
- What happens if a Z3 memory slave occupies $10000000 memory space?
- Will Autoconfig prevent this situation and avoid the memory space allocated by TF4060
Again, thanks for you thorough investigation!
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
It will determine whether to run the cycle out to the Z3 cards i guess. Internal cycles will not do that.
We will patch expansion.library to stop this. i'm working on this with erique. So long as the OS never allocates addresses there it will be fine. Technically its a bug if the OS does that because its already in the system pool by the time autoconfig runs. But it would not surprise me if it had completely different behaviour on 3.0/3.1/3.2/3.9Oliver_A wrote: 30 Jul 2024 19:57 What concerns me now is:
- What happens if a Z3 memory slave occupies $10000000 memory space?
- Will Autoconfig prevent this situation and avoid the memory space allocated by TF4060
A card cannot be at that address unless the OS tells it to be. You will need a lot of cards to hit that address a the moment.
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
But more digging. Even though the hardware docs say the upper 128Mb of my card is in ZIII area..
If something is allocated outside this area is actually a bug.
But i guess.. Show me a system that has an issue and i'll devise a fix.
Code: Select all
#define EZ3_CONFIGAREA 0x40000000 /* Zorro III space */
#define EZ3_CONFIGAREAEND 0x7FFFFFFF /* Zorro III space */
#define EZ3_SIZEGRANULARITY 0x00080000 /* 512K increments */
But i guess.. Show me a system that has an issue and i'll devise a fix.
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
Oliver_A
Re: TF4060 Beta Program
Since it seems that the operating system only uses $40000000 upwards to assign Zorro III resources, I suppose that there are no issues with having 256MB local CPU memory. Heck, it could even be up to 896MB, if someone can find a suitable use-case for that.
So far, I am positively surprised by the stability of the TF4060. Great job! :)
What remains are (after clarifying the root cause of the A3000T instabilities - I will assist Christoph by debugging the issue with an Oscilloscope and Logic Analyzer):
* Chip-Ram Read and Write Performance could and should be improved to 7MB/s at some point (makes a significant difference for AGA games and Demos). Somewhere, there is a redundant wait-state lurking in the 060<>030 bus translator.... ;)
* Since the MEMCTRL is an FPGA, one could entertain the idea to implement a bank buffer to further cut-down first access penalties. I attempted to do this on the BFG, but the Xilinx XC95288 is not suitable for that, since it requires extra resources to implement comparators (lack of xor), easily leading to timing violations.
So far, I am positively surprised by the stability of the TF4060. Great job! :)
What remains are (after clarifying the root cause of the A3000T instabilities - I will assist Christoph by debugging the issue with an Oscilloscope and Logic Analyzer):
* Chip-Ram Read and Write Performance could and should be improved to 7MB/s at some point (makes a significant difference for AGA games and Demos). Somewhere, there is a redundant wait-state lurking in the 060<>030 bus translator.... ;)
* Since the MEMCTRL is an FPGA, one could entertain the idea to implement a bank buffer to further cut-down first access penalties. I attempted to do this on the BFG, but the Xilinx XC95288 is not suitable for that, since it requires extra resources to implement comparators (lack of xor), easily leading to timing violations.
-
terriblefire
- Admin sponsor

- Posts: 5686
- Joined: 28 Aug 2017 22:56
- Location: Glasgow, UK
Re: TF4060 Beta Program
Indeed. Possibly Amix has an issue. but i had to make a decision of where to put the extra 128Mb and this seemed the least worst option.Oliver_A wrote: 01 Aug 2024 18:20 Since it seems that the operating system only uses $40000000 upwards to assign Zorro III resources, I suppose that there are no issues with having 256MB local CPU memory. Heck, it could even be up to 896MB, if someone can find a suitable use-case for that.
Thanks. If i had an actual 3000T to use for a few days i'd nail it fast. it only took a week or so to nail the 4000T and that was a real PITA. Does the 3000T use the same roms as the 3000? If so i can provide a "debug" rom that spits out CBM info.What remains are (after clarifying the root cause of the A3000T instabilities - I will assist Christoph by debugging the issue with an Oscilloscope and Logic Analyzer):
This i am aware of but i want everything else rock solid before i tackle it. Oddly the code is identical to TF1260 but we have this issue. I didnt think the chipram speed issue was enough to stop the beta shipping.* Chip-Ram Read and Write Performance could and should be improved to 7MB/s at some point (makes a significant difference for AGA games and Demos). Somewhere, there is a redundant wait-state lurking in the 060<>030 bus translator.... ;)
Not sure what you mean by this. Do you mean keep an SDRAM row open unless we change? if so that can be problematic with the refresh cycles. 80Mb/s is not fast enough?* Since the MEMCTRL is an FPGA, one could entertain the idea to implement a bank buffer to further cut-down first access penalties. I attempted to do this on the BFG, but the Xilinx XC95288 is not suitable for that, since it requires extra resources to implement comparators (lack of xor), easily leading to timing violations.
EDIT: This can also add a extra cycle every cycle to check if the row is open. Its not worth it IMHO.
———
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
"It is not necessarily a supply voltage at no load, but the amount of current it can provide when touched that
indicates how much hurting you shall receive."
-
Oliver_A
Re: TF4060 Beta Program
Hmm, isn't Amix 68030 only? But maybe that's a rare use-case, although i might be wrong about that.terriblefire wrote: 01 Aug 2024 18:27 Indeed. Possibly Amix has an issue. but i had to make a decision of where to put the extra 128Mb and this seemed the least worst option.
An A3000T is big and heavy and can easily break your foot, so no shipping from Germany to Glasgow feasible (I suppose). ;)Thanks. If i had an actual 3000T to use for a few days i'd nail it fast. it only took a week or so to nail the 4000T and that was a real PITA. Does the 3000T use the same roms as the 3000? If so i can provide a "debug" rom that spits out CBM info.
Do the Lattice FPGAs provide the possibility to instantiate a logic analyzer (similar to SignalTap in Altera FPGAs) ?
Using the debug ROM might help us to track down the issue more easily, thanks! :)
I might emphasize the fact that the TF4060 is actually WORKING in an A3000T is already a big win.
Prioritizing stability first over performance is a sensible choice.This i am aware of but i want everything else rock solid before i tackle it. Oddly the code is identical to TF1260 but we have this issue. I didnt think the chipram speed issue was enough to stop the beta shipping.
Yes exactly. You need a small buffer for that to keep track of this, and if a subsequent memory access hits an open row, you can reduce the first access penalty. It's a bit more complicated, but I think doable on the Lattice FPGA.Not sure what you mean by this. Do you mean keep an SDRAM row open unless we change?
Yes, but that is not unusual. A 100MHz 060 is capable to do many consecutive memory accesses within that time frame. You can postpone a certain number of refreshes in a case when the CPU is in a state where it issues a lot of consecutive bursts (<----------ACCESS-------->REF REF REF REF<-------ACCESS---------->)if so that can be problematic with the refresh cycles.
I expect that this change can push the memory access performance past 90MB/s.
Well, somebody needs to show all those Vampires and Emulator-Pretenders what a real, hard-earned 68060 Rev6 CPU can REALLY do. ;)80Mb/s is not fast enough?
Keep up the great work!
Who is online
Users browsing this forum: ClaudeBot and 8 guests